2013-02-27 77 views
13

Im制作一个静态的iOS框架。我想使用第三方代码,在我的框架中以AFNetworking为例。 AFNetworking是受欢迎的。我现在可以感知命名空间的碰撞。这里最好的做法是什么?据我了解我有3种选择:制作一个iOS框架:包括第三方库和代码

1)建立AFNetworking到我的框架,出口头。这可以让客户在我的库中使用AFNetworking的版本,但他们不能使用也链接AFNetworking的其他框架。如果他们建立在AFNetworking上,他们会依靠我进行更新。

2)对AFNetworking头的代码,但使第三方包括在他们的项目AFNetworking。这为框架消费者增加了一个额外的步骤,他们必须添加AFNetworking源代码。未来可能会存在版本不兼容的情况,但至少在另一个框架使用AFNetworking时,他们可以同时使用该版本。

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

我是否有任何其他的选择吗?什么是最佳实践?

+0

我不明白你为什么会遇到命名空间冲突(除非你用'AF'加前缀)。使用AFNetworking的最新稳定版本,但让用户包含它。如果您使用的API已公开,则不太可能改变。 – 2013-02-27 16:30:43

+1

你检查过椰壳吗?您可以将依赖关系添加到其他窗格。 – mkral 2013-02-27 16:31:49

+0

@ H2CO3如果编译'AFNetworking'对象包括在我的图书馆二进制和用户添加的代码本身或使用另一种框架,它包括有将在Objective-C的命名空间冲突时,链接器试图使最终的应用程序二进制文件。 – jackslash 2013-02-27 16:33:51

回答