iOS Framework问题:Class都在两者中实现

时间:2016-06-18 13:12:28

标签: ios objective-c xcode7

我正在使用第三方框架类的iOS框架项目,因此我在链接框架和库部分添加了第三方框架。

当我在我的iOS应用程序项目中添加自定义框架时,我收到了每个类的警告

  

objc [3139]:Class' class_name'两者都实现了   /private/var/containers/Bundle/Application/C131AF0F-7CF8-4360-8716-3E8A595169D6/'app_name'.app/Frameworks/'framework_name'.fr​​amework/'framework_name& #39;   和   /var/containers/Bundle/Application/C131AF0F-7CF8-4360-8716-3E8A595169D6/'app_name'.app/'app_name' ;.   将使用两者之一。哪一个未定义。

iOS应用项目也与该第三方框架相关联。所以我认为这个问题是因为我的框架还包含第三方框架的编译版本。

我没有为此找到任何合适的解决方案。谁能告诉我如何摆脱这个?

有什么方法可以让它发挥作用吗?

1 个答案:

答案 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