在-ObjC上反对框架

时间:2015-03-16 18:09:03

标签: ios

所以在我的项目中我有FacebookSDK,ParseSDK和FirebaseSDK。 Facebook和解析都需要螺栓,所以我实现了。但是除非我删除-ObjC标志,否则它不会编译。问题是,如果我删除此标记,代码将编译,但在尝试初始化Firebase时会导致运行时错误,因为它需要-ObjC。我很乱。我可以仅为该特定框架设置标志吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

(我认为这应该是评论,但我还没有足够的代表,希望这有助于解决这个问题。)

我遇到了完全相同的问题(使用SponsorPay SDK代替FirebaseSDK),Facebook SDK&解析工作正常,直到我添加SponsorPay工作所需的 -ObjC 标志。

删除Bolts.framework不是解决方案,因为这会产生一些链接错误:

"_BFTaskMultipleExceptionsException", referenced from:

      ___53+[PFObject(Private) deleteAllAsync:withSessionToken:]_block_invoke214 in Parse(PFObject.o)

      ___65+[PFObject(Private) _deepSaveAsync:withCurrentUser:sessionToken:]_block_invoke311 in Parse(PFObject.o)

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我使用 FacebookSDK 包中包含的 Bolts.framework ,我会得到完全相同的错误。

但是,使用 Parse Library 中包含的 Bolts.framework ,我得到了一个不同的错误:

ld: 91 duplicate symbols for architecture x86_64

所有框架和库都已更新。

修改

使用cocoapods也解决了我的问题!

答案 1 :(得分:0)

请参阅:FacebookSDK and Bolts conflicting each other (duplicate symbols) on build

我怀疑Facebook已经破产,并且包括螺栓本身。没有第三方框架应该包含另一个第三方框架,因为它导致了这一点。所有第三方框架都应在最终申请阶段进行链接。进入任何链接他们自己的子库的框架,并删除子子库(并打开违规者的bug)。