我正在使用第三方框架类的iOS框架项目,因此我在链接框架和库部分添加了第三方框架。
当我在我的iOS应用程序项目中添加自定义框架时,我收到了每个类的警告
objc [3139]:Class' class_name'两者都实现了 /private/var/containers/Bundle/Application/C131AF0F-7CF8-4360-8716-3E8A595169D6/'app_name'.app/Frameworks/'framework_name'.framework/'framework_name& #39; 和 /var/containers/Bundle/Application/C131AF0F-7CF8-4360-8716-3E8A595169D6/'app_name'.app/'app_name' ;. 将使用两者之一。哪一个未定义。
iOS应用项目也与该第三方框架相关联。所以我认为这个问题是因为我的框架还包含第三方框架的编译版本。
我没有为此找到任何合适的解决方案。谁能告诉我如何摆脱这个?
有什么方法可以让它发挥作用吗?
答案 0 :(得分:2)
tl; dr请勿在应用程序目标的 Build Phases 中链接第三方框架。请改用Link Frameworks Automatically
。
为了使这一点更清楚,让我举一个例子。有一个名为CrashReporter.framework的第三方框架。自定义框架称为HockeySDK.framework(链接到CrashReporter.framework)。然后我有一个名为WeatherApp的应用程序(链接到HockeySDK.framework)。
CrashReporter.framework <---
^ |
| |
| X X X NO! DONT'T LINK THIS!
HockeySDK.framework |
^ |
| |
| |
WeatherApp -----------------
我不链接WeatherApp目标中 Build Phases 的 Link Binary With Libraries 部分中的CrashReporter.framework(即使Weather应用程序)需要CrashReproter.framework来构建)。我转到WeatherApp目标的构建设置,并确保Link Frameworks Automatically
(如果在iOS上,则Enable Modules (C and Objective-C)
)设置为Yes
。