13

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

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

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

3)重新命名空间AFNetworking并保持标题私有。通过这种方式,我可以避免任何方式的命名空间冲突,但更新我的AFNetworking. 最终的二进制文件变得有点大,但所有的互操作性问题都得到了解决。这对我来说还有很多工作要做。

我还有其他选择吗?最佳实践是什么?

4

2 回答 2

6

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

不要重命名标题。很费时间,也很难。

PD:一个样本:

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

于 2013-02-27T17:11:28.703 回答
0

就数字 3 而言,它不是完整的“重新命名空间”,但它类似于:

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

于 2014-03-23T23:35:53.513 回答