是否可以将参数传递给框架/库?

时间:2012-10-10 01:13:32

标签: objective-c ios xcode frameworks libraries

在我的项目中,我使用不同的标志来处理多个目标时运行不同的代码。像

这样的东西
#ifdef MY_FLAG
//do this
#else
//do this other
#endif

现在我正在将一些代码带到外部库中,但我不想为每个标志编译不同版本的库,所以问题是:

有没有办法传递类似于从外面告诉库(或框架)的参数,哪些代码应该在" global"方式?

2 个答案:

答案 0 :(得分:0)

您正在使用#ifdef执行的操作是确定编译器可以看到的代码。因此,您将不得不为每个标志编译不同的版本,因为库已链接但已编译。我想这个问题更多的是你对磁盘上的人做了什么。

您可以将多个CPU架构存储到一个静态库中。因此,任何仅仅针对您是针对ARMv7,ARMv7还是i386的标志都可以使用单个库进行处理。

对于其他人,您可能需要生成不同的库。然而,这只是磁盘占用空间的形状问题 - 您可以使用链接到库的任何项目的项目设置,以便根据构建配置链接到库的不同版本。

答案 1 :(得分:0)

一种选择是让框架提供框架用户可以调用的某种初始化方法或函数。这将告诉框架它应该运行什么“模式”。框架的客户端可以在应用程序启动时调用它。