我制作一个静态的iOS框架.我想使用第三方代码,让我们以框架中的AFNetworking为例. AFNetworking很受欢迎.我现在可以感觉命名空间的碰撞.这里最好的做法是什么?据我所知,我有3个选择:
1)将AFNetworking构建到我的框架中,导出标题.这样客户端就可以在我的库中使用AFNetworking版本,但是它们不能使用其他链接AFNetworking的框架.他们依靠我的AFNetworking的更新,如果它们建立在它.
2)针对AFNetworking标题的代码,但使第三方在其项目中包含AFNetworking.这为框架消费者增加了一个额外的步骤,他们必须添加AFNetworking源.未来可能存在版本不兼容,但至少如果另一个框架使用AFNetworking,他们可以同时使用它们.
3)重命名空间AFNetworking并保持标题为私有.这样我就可以以任何方式避免命名空间冲突,只不过它真的很难更新我的AFNetworking副本.最终的二进制文件有点大,但所有的互操作性问题都得到解决.这对我来说是更多的工作.
我有其他选择吗?最好的做法是什么?
解决方法
一个更好的选择是使用
http://cocoapods.org.这样,可以声明libs的依赖关系,并为整个项目获得一个单一的下载.
P.D:一个样本:
http://chariotsolutions.com/blog/post/using-cocoapods-to-manage-private-libraries/