3

我在iOS 4.3.5通过临时部署(通过 HTTP 下载)安装我的应用程序的手机上看到此错误:

Dyld 错误信息:

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

我在应用程序中的代码不会调用iOS 5库,除非已显示类存在(即if(NSClassFromString(@"NSJSONSerialization")!=nil),因此问题不在于调用iOS 5iOS 4 设备上的库。

该应用程序本身包含一个静态库,它是我自己的代码,并且是NSJSONSerialization引用所在的位置。

iOS 4.3如果直接从 xcode 运行(即通过 USB 电缆连接到开发机器的 iPhone),该应用程序可以在设备上完美运行。但是,当通过临时部署在同一设备上运行时,我看到了崩溃。

adhoc 存档是通过Product->Archivein构建的xcode 4,然后我使用“分发”按钮创建 Ad-Hoc 部署 .ipa 文件。

该应用程序几乎立即崩溃,让我想也许我的代码根本没有被调用,而且我的存档构建设置在这里可能不正确?

非常感谢您花时间提供帮助!

4

1 回答 1

11

这听起来与我在这个答案中遇到的完全相同的问题。在处理构建和归档的静态库与通过 Xcode 直接安装时,处理弱链接的方式略有不同。后者似乎可以处理类和函数级的弱链接(从 Xcode 4.3 开始)。但是,在归档包含静态库的项目时,没有正确使用弱链接。

就我而言,我需要使用我的静态库在应用程序中手动弱链接有问题的 iOS 框架,以便它在构建临时或 App Store 分发时工作。为此,请转到项目的构建设置,转到 Build Phases 选项卡,然后展开 Link Binary With Libraries 分组。找到有问题的框架(在我的例子中是 CoreVideo.framework,但听起来您可能需要为 Foundation.framework 执行此操作)并将其从必需更改为可选。

这应该可以解决您的弱链接问题。我正在进一步调查这个问题,看看我是否缺少构建设置,或者这是否是链接器错误。

于 2012-04-23T16:37:03.480 回答