3

在我将 Facebook 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 框架设置为可选,我可以避免这种崩溃,但我认为这不是最好的选择。

是否有另一种方法可以使 Facebook SDK 在版本 5 之前的 iOS 设备中运行?

4

2 回答 2

2

来自 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 的支持

于 2013-05-15T13:13:30.310 回答
0

该类直到 ios5 才可用 - 查看 Xcode 文档窗口中的类参考。您需要做的是获取 JSONKit,一个开源类,并使用它。用法基本相同。您需要将此类构建到您的应用程序中,然后动态测试苹果类是否存在,然后使用适当的类,或者始终使用开源类。

请注意 JSONKit 不是 ARCified,因此如果您的应用程序的其余部分是 ARC,则需要为其设置适当的编译标志。

编辑:因此您可以变得聪明并编写自己的存根,在旧版本中桥接对 JSONKit 的调用。从概念上讲,你应该能够完成这项工作,但我担心如果 FB 代码是为 ios5 开发的,那么代码中可能还会潜伏其他 Api 问题——而且你老花了很多时间不断地试图找到和修复它们。

于 2013-05-10T11:47:06.113 回答