ios – 如何解决Cocoa触摸框架中的符号名称冲突

我开发了一个 Cocoa触摸框架,并且嵌入其中的第三方静态框架类存在问题.

当消费者项目使用我的框架并且还导入我的框架使用的第三方静态框架时,问题就是符号冲突.

我最终想从我的框架中删除这些类,因为它们与主机项目类(它们使用相同的第三方框架)冲突,并且以某种方式告诉我的框架依赖主要项目第三方框架(我将指示开发人员导入框架)
或者,我将为这些类添加一个前缀,以便在托管项目时嵌入我的框架,并使用与我自己的框架相同的第三方框架,它不会得到符号冲突

任何帮助或方向将受到欢迎!

解决方法

CocoaPods可以帮助您解决重复符号的问题.
下面我提供了有关如何实现的详细说明:

定义
让我们给出一些更简单的解释的定义:
MyFramework – 您正在开发的框架.
MyApplication – 使用MyFramework的应用程序.
其他框架 – 在MyFramework和MyApplication中使用的第三方框架.

问题
据了解,问题是Xcode无法在OtherFramework中使用“重复的符号”错误进行构建.


以下是您需要满足以解决此问题的条件:

1)MyFramework必须参考CocoaPods的OtherFramework:

// MyFramework Podfile
use_frameworks!
pod "OtherFramework"

2)MyApplication必须参考CocoaPods的OtherFramework:

// MyApplication Podfile
use_frameworks!
pod "OtherFramework"

3)MyApplication可以使用任何机制来引用MyFramework(通过CocoaPods或者通过Drag& Drop框架来进行项目).

4)其他框架必须用CocoaPods构建.
如果它不是用CocoaPods构建的,你可以自己做.
为此,您需要创建OtherFramework.podspec并且可选地将其提交给CocoaPods私有存储库.没关系,如果你有源文件或只是OtherFramework.framework包.更多关于建筑CocoaPod here的细节.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...