制作iOS框架:包括第三方库和代码

时间:2013-02-27 16:28:35

标签: ios objective-c frameworks linker

我正在制作一个静态的iOS框架。我想使用第三方代码,在我的框架中以AFNetworking为例。 AFNetworking很受欢迎。我现在可以感知命名空间冲突。这里的最佳做法是什么?据我所知,我有3个选择:

1)在我的框架中构建AFNetworking,导出标题。这允许客户在我的库中使用AFNetworking的版本,但是他们不能使用也链接AFNetworking的其他框架。如果他们以AFNetworking为基础,他们会依赖我来更新AFNetworking。

2)针对AFNetworking标题的代码,但让第三方在其项目中包含AFNetworking。这为框架消费者增加了额外的步骤,他们必须添加AFNetworking源。将来可能存在版本不兼容,但至少如果另一个框架使用AFNetworking,他们可以同时使用它。

3)重新命名空间AFNetworking并将标题保密。这样我就可以以任何方式避免名称空间冲突,除非它变得非常难以更新我的AFNetworking副本。最终的二进制文件变得更大,但所有互操作性问题都得到了解决。这对我来说还有很多工作要做。

我还有其他选择吗?什么是最佳做法?

2 个答案:

答案 0 :(得分:6)

更好的选择是使用http://cocoapods.org。通过这种方式,可以声明libs的依赖关系并获得整个项目的单个下载。

不要重命名标头。耗费时间,而且很难。

P.D:这样的一个例子:

http://chariotsolutions.com/blog/post/using-cocoapods-to-manage-private-libraries/

答案 1 :(得分:0)

就第3个而言,它不是一个完整的"重命名空间"但它类似于:

http://atastypixel.com/blog/avoiding-duplicate-symbol-issues-when-using-common-utilities-within-a-static-library/