iphone - 重复符号_OBJC_METACLASS_$_SBJsonParser

标签 iphone ios facebook

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

ld: duplicate symbol _OBJC_METACLASS_$_SBJsonParser in /Users/tom8/Desktop/site1/site1/facebook-ios-sdk/libfacebook_ios_sdk.a(SBJsonParser.o) and /Users/tom8/Desktop/AWSiOSSDK.framework/AWSiOSSDK(SBJsonParser.o) for architecture i386

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

最佳答案

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

  1. 将尽可能多的 #include 指令移至 .m 文件中
  2. 在 .h 文件中使用 @protocol 和 @class 前向声明。

唯一需要从 .h 中 #include 的情况是当您实际扩展类或实现协议(protocol)时。如果您只需要在签名中使用类名或协议(protocol)名称,请使用前向声明并将 #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

关于iphone - 重复符号_OBJC_METACLASS_$_SBJsonParser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11498462/

相关文章:

javascript - Facebook Iframe 应用程序 - 尽管我安装了 SSL,但仍提示输入安全内容?

ios facebook 获取玩相同应用程序的好友列表

ios - 如何在不使用 nib 名称的情况下加载自定义 UITableViewCell

iphone - 向现有 Xcode 项目本地化添加新语言

html - 如何让小内容填充UIWebView?

javascript - 如何转发 Facebook 帖子

iphone - iPhone 是否支持具有 alpha 透明度的 24 位 PNG?

iphone - UILabel 文本的大纲

ios - 删除和添加相同插件后的 Cordova 构建错误

ios - UIView animate withDuration 不会在 iOS 9.3.5 上调用完成处理程序