【问题标题】:Is it possible to pass arguments to a framework/library?是否可以将参数传递给框架/库?
【发布时间】:2012-10-10 01:13:32
【问题描述】:
在我的项目中,我在处理多个目标时使用不同的标志来运行不同的代码。类似的东西
#ifdef MY_FLAG
//do this
#else
//do this other
#endif
现在我正在将一些代码带到外部库中,但我不想为每个标志编译不同版本的库,所以问题是:
有没有办法传递参数之类的东西,从外部告诉库(或框架)哪些代码应该以“全局”方式运行?
【问题讨论】:
标签:
objective-c
ios
xcode
frameworks
libraries
【解决方案1】:
您对#ifdef 所做的是确定编译器可以看到哪些代码。因此,您将不得不为每个标志编译不同的版本,因为库已链接但已经编译。我想问题更多的是你如何处理磁盘上的那些。
您可以将多个 CPU 架构存储到一个静态库中。因此,任何仅与您的目标是 ARMv7、ARMv7s 还是 i386 有关的标志都可以使用单个库来处理。
对于其他人,您可能必须生成不同的库。然而,这只是磁盘占用空间的形状问题——您可以使用链接到库的任何项目的项目设置,以便根据构建配置链接到不同版本的库。
【解决方案2】:
一种选择是让框架提供框架用户可以调用的某种初始化方法或函数。这将告诉框架它应该在什么“模式”下运行。框架的客户端可以在应用启动时调用它。