我正在制作一个静态的iOS框架。我想使用第三方代码,在我的框架中以AFNetworking
为例。 AFNetworking
很受欢迎。我现在可以感知命名空间冲突。这里的最佳做法是什么?据我所知,我有3个选择:
1)在我的框架中构建AFNetworking
,导出标题。这允许客户在我的库中使用AFNetworking
的版本,但是他们不能使用也链接AFNetworking
的其他框架。如果他们以AFNetworking为基础,他们会依赖我来更新AFNetworking。
2)针对AFNetworking
标题的代码,但让第三方在其项目中包含AFNetworking
。这为框架消费者增加了额外的步骤,他们必须添加AFNetworking
源。将来可能存在版本不兼容,但至少如果另一个框架使用AFNetworking
,他们可以同时使用它。
3)重新命名空间AFNetworking
并将标题保密。这样我就可以以任何方式避免名称空间冲突,除非它变得非常难以更新我的AFNetworking
副本。最终的二进制文件变得更大,但所有互操作性问题都得到了解决。这对我来说还有很多工作要做。
我还有其他选择吗?什么是最佳做法?
答案 0 :(得分:6)
更好的选择是使用http://cocoapods.org。通过这种方式,可以声明libs的依赖关系并获得整个项目的单个下载。
不要重命名标头。耗费时间,而且很难。
P.D:这样的一个例子:
http://chariotsolutions.com/blog/post/using-cocoapods-to-manage-private-libraries/
答案 1 :(得分:0)
就第3个而言,它不是一个完整的"重命名空间"但它类似于: