重复符号_OBJC_METACLASS _ $ _ SBJsonParser

时间:2012-07-16 05:16:17

标签: iphone ios facebook

我刚刚在我的项目中包含了AWSIOSSDK.framework和Facebook SDK,然后出现了构建错误:

  

ld:/Users/tom8/Desktop/site1/site1/facebook-ios-sdk/libfacebook_ios_sdk.a(SBJsonParser.o)和/Users/tom8/Desktop/AWSiOSSDK.framework/AWSiOSSDK中的重复符号_OBJC_METACLASS _ $ _ SBJsonParser( SBJsonParser.o)用于架构i386

我使用iOS Facebook SDK静态库,所以我不能简单地删除facebooksdk文件夹中的sbjson文件。我也尝试删除AWSIOSSDK文件夹中的sbjson文件,但它也没有用。有人可以给我一些建议吗?

2 个答案:

答案 0 :(得分:1)

几乎无一例外,当我遇到重复的符号构建错误时,这是​​因为我从其他.h文件中过多地加载了#include-ing .h文件。解决方案几乎总是这两个简单的步骤:

  1. 尽可能多地将#include指令移入.m文件
  2. 在.h文件中使用@protocol和@class前向声明。
  3. 如果您只需要在签名中使用类名或协议名称,请使用前向声明并将#include移动到.m文件。

    示例:

    foo.h中

    #include "Bar.h"
    #include "BazProtocol.h"
    #include "BarDelegateProtocol.h"
    @interface Foo:NSObject <BarDelegate>
    @property (strong, nonatomic) id<Baz> myBaz;
    @property (strong, nonatomic) Bar *myBar;
    @end
    

    变为

    #include "BarDelegateProtocol.h"
    @class Bar;
    @protocol Baz;
    
    @interface Foo:NSObject
    @property (strong, nonatomic) id<Baz> myBaz;
    @property (strong, nonatomic) Bar *myBar;
    @end
    

答案 1 :(得分:0)

我也有同样的问题。您可以从Facebook项目本身删除文件,但不能从框架中删除。

所以点击:

facebook-ios-sdk.xcodeproj(打开文件内容) - &gt; FBConnect(查看文件夹内容) - &gt; JSON(查看文件夹内容) - &gt;删除SBJsonWriter和SBJsonParser。

尝试编译。你应该好好去!

伊娃