Xcode项目中使用的静态库之间的冲突

我正在使用RestKit,GData和Facebook API。 他们都有一个JSON文件,其中许多共享相同的名称,枚举等。当我编译我得到一个错误重复。

我怎样才能防止冲突?

谢谢Shani

这是我最好的猜测。 发布你编译的错误会很有帮助。

如果您正在使用-all_load链接器标志,请将其closures。 如果您的库要求您使用此选项,请尝试在需要它的特定库上使用-force_load选项。 作为绝对的最后手段,从源代码构build可以重命名碰撞符号的库。

下面的问题可能会提供有关all_load问题的更多信息:

静态库中的Objective-C类别

我遇到了这个问题,因为新的Facebook SDK 3.0现在是一个静态框架,其中还包括SBJSON,我也有另一个静态框架,其中也包括相同的类。 最初,我只需进入并编辑Facebook SDK的源文件并将自定义前缀应用于SBJSON类。 这不再有效。

我开始变得非常沮丧,开始思考,这是我提出的解决scheme。

  1. 导航到FacebookSDK.framework->版本 – >当前
  2. 用最好的IDE打开已编译的FacebookSDK库文件,textedit会做!
  3. search区分大小写,并将所有出现的“SBJson”replace为“FBJson”
  4. search区分大小写,并将所有出现的“SBJSON”replace为“FBJSON”
  5. 保存,清理,编译,很好去!

谁知道这将工作?

注意:有人会说,为什么用FBJson而不是FBSBJsonreplace? 我确定最好保持它相同的字符长度是安全的。 注意:如果您正在尝试使用其他框架,请确保在头文件中search您正在重命名的冲突类的任何引用。 在这种情况下,被重命名的类在任何头文件中都没有被引用。 如果是的话,我会确保在头文件中重命名它。