我在iOS中创建了一个静态库,我的项目有一些常用功能。我使用了iOS Universal Framework的说明,一切都很好。
我在静态库中有一个需要AFNetworking
的模块。所以我安装了cocoapods,并将其包含在我的静态库中
但是,当我将静态库包含到另一个也需要AFNetworking
的项目中时,我运行该项目时,所有常见类都会出现重复的符号错误。
避免这种冲突的最佳方法是什么?
答案 0 :(得分:1)
最好的方法是不在框架中包含任何第三方库/框架。
以下是关于“如何构建自己的框架”的Apple reference。有很多指南可以帮助建立一个好的框架,如果你将它链接到任何项目,不会导致任何错误。
AFNetworking
是一个特定于应用程序的框架,因此您不应将其包含在框架中。您可以weak
将您的框架链接到AFNetworking
,但是您应该避免强烈关联它。
以下是有关weak linking的资源。
例如,如果您使用的是第三方库,则应指定您的框架要求用户添加依赖项以便使用它。 这是an example AFNetworking如何做到的。 另外,请检查this framework及其规范中有关依赖关系的要求。
答案 1 :(得分:0)
这样做的最佳方法(在我看来)是强调类名以保持它们的独特性。
因此,假设您的库名为XYLibrary
。它将包含一堆AFNetworking文件,例如AFNetworking.h
和AFNetworking.m
。将其重命名为XY_AFNetworking.h
和XY_AFNetworking.m
。这应该有希望使它们在另一个项目中与该库的其他实例保持唯一。
您也应该为任何其他第三方库执行此操作。