NSJSONSerialization与Facebook iOS SDK 3.5崩溃

将iOS iOS SDK从3.2更新到3.5后,我在iOS版本超过5(例如4.3.5)的设备上运行我的应用程序时出现此错误。

dyld: Symbol not found: _OBJC_CLASS_$_NSJSONSerialization ... Expected in: /System/Library/Frameworks/Foundation.framework/Foundation 

如果我将Foundation框架设置为可选,我可以避免这种崩溃,但我不认为这是最好的select。

有没有其他的方法可以让Facebook SDK在iOS版本5以前的设备上运行?

从Facebook iOS SDK更新日志v3.5: http : //developers.facebook.com/ios/change-log-3.x/

移除对iOS 4的支持。* Facebook 6.0对iOS 4.x的支持下降。 要保持同步,Facebook SDK也不支持iOS 4.x.

所以,如果你更新到Facebook SDK 3.5,你会失去对iOS 4.x的支持

那个类在ios5之前是不可用的 – 查看Xcode文档窗口中的类引用。 你需要做的是抓住JSONKit,一个开源的类,并使用它。 用法大多相同。 您将需要将此类构build到您的应用程序中,然后在Apple类存在时进行dynamictesting,然后使用相应的类,或者始终使用开源类。

请注意,JSONKit不是ARCified的,所以如果你的应用程序的其余部分是ARC,你需要为它设置合适的编译标志。

编辑:所以你可能会变得聪明,并编写自己的存根,桥接调用旧版本的JSONKit。 从概念上讲,你应该能够做到这一点,但是我担心的是,如果FB代码是为ios5开发的,那么在代码中也可能存在其他的Api问题 – 而且你老花了很多时间来不断地寻找和修复它们。