在多个地方实施的类

时间:2015-09-23 18:26:52

标签: ios objective-c cocoapods xcode7

我在iOS应用中通过Cocoapods使用Twitter API。它正在应用程序,框架和应用程序扩展中使用。该项目构建没有错误,但在运行时,我收到此消息:

  

objc [27031]:TWTRScribeService类在两者中实现   〜/资源库/开发/ Xcode中/ DerivedData / TweetSave-cydxfgkrgtggufefrpvocnxaxelr /编译/产品/调试-iphonesimulator / SaveKit.framework / SaveKit   和   〜/资源库/开发/ CoreSimulator /设备/ 3630AFBE-7C59-4574-8F44-9592A12DEF82 /数据/集装箱/包/应用/ D7A8F9C8-A39A-46DD-B737-A656415488F0 / TweetSave.app / TweetSave。   将使用两者之一。哪一个未定义。

对于TwitterKit框架中的很多类,它会重复多次。

这是我的Podfile:

def twitterkit_pods
    pod 'TwitterKit'
    pod 'TwitterCore'
end

target 'TweetSave' do
    pod 'Fabric'
    twitterkit_pods 
end

target 'SaveKit' do
    twitterkit_pods
end

target 'Saver' do
    twitterkit_pods
end

TweetSave是应用程序目标,SaveKit是我的框架,Saver是应用程序扩展。

此消息的含义是什么?如何预防?

2 个答案:

答案 0 :(得分:1)

您已将相同的类静态链接到应用程序和框架中,并且运行时链接程序对使用哪个类感到困惑。它会决定使用哪个,并警告你这个事实。

我认为解决此问题的唯一方法是动态链接TwitterLink.framework,如果可能的话,但是因为它设计用于iOS应用程序,它可能是一个静态框架。因此,我看不出任何容易出于这个问题。

答案 1 :(得分:1)

如果应用程序在SaveKit框架中链接,它就是它的样子,那么它将以这种方式获取所有类,并且你可以从应用程序目标中删除twitterkit_pods。