objective-c - iOS 4.3.5 上的静态库中找不到符号错误

标签 objective-c ios

我在 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 4 设备上调用 iOS 5 库。

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

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

临时存档是通过 xcode 4 中的 Product->Archive 构建的,然后我使用“分发”按钮创建临时部署 .ipa 文件.

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

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

最佳答案

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

在我的例子中,我需要使用我的静态库在应用程序中手动弱链接有问题的 iOS 框架,以便它在构建临时或 App Store 分发时工作。为此,请转至项目的build设置,转至构建阶段选项卡,然后展开链接二进制文件与库分组。找到有问题的框架(在我的例子中是 CoreVideo.framework,但听起来您可能需要为 Foundation.framework 执行此操作)并将其从 Required 更改为 Optional。

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

关于objective-c - iOS 4.3.5 上的静态库中找不到符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10281587/

相关文章:

objective-c - NSApplicationSupportDirectory无效的CFStringRef

objective-c - 代码 4 : How do you add an existing framework?

ios - NSDateComponentsFormatter 单位分隔符

ios - iOS XCode 应用程序可以引用 MonoTouch 程序集吗?

ios - 如何使用 RGB 数据创建 CGImage?

ios - 我想知道如何为 iOS "fat"库制作一个 makefile

ios - 如何使用文本字段处理 TableView 单元格

iphone - Instruments 中的 VM Tracker 为空

ios - UIImage 返回零

ios - MPMoviePlayerController 不加载电影