6

Xcode 4.4、Mountain Lion、llvm 4.0 编译器。我构建了我的应用程序,它适用于 ios5、ios6 设备,但在 iphone 3g 和 ios 4.2 上我有这样的错误:

dyld: lazy symbol binding failed: Symbol not found: _objc_storeStrong
Referenced from: /var/mobile/Applications/68B78A19-71E6-4BDA-B997-B7DED4D02429/iGuides.app/iGuides
Expected in: /usr/lib/libobjc.A.dylib

dyld: Symbol not found: _objc_storeStrong
Referenced from: /var/mobile/Applications/68B78A19-71E6-4BDA-B997-B7DED4D02429/iGuides.app/iGuides
Expected in: /usr/lib/libobjc.A.dylib

在 Xcode 4.3 上一切正常,因为我只使用了 strong 和 unsafe_unretained 修饰符。

我明白了,没有弧库链接到我的应用程序。

我试图手动链接 libarclite_iphoneos.a,没有反应。我添加了 -fobj-arc 来链接标志,没有反应。

我想,iPhone 3g 支持将在 XCode 4.5 中被删除,而不是 4.4。是这样吗?

4

2 回答 2

3

我刚刚发现问题。错误是因为iRate库,当我删除对这个库的引用时,一切都开始工作了。

更新:更新到最新版本后一切正常。谢谢@Nick Lockwood 的解释:在iOS arclite lib 加载[class load] 方法执行。所以你需要延迟初始化。在 iRate 中,他在 load 方法中插入了 performOnTheMainThread。

于 2012-08-18T20:42:47.597 回答
1

尝试添加Other Linker Flags -fobjc-arc

于 2012-08-10T00:07:27.807 回答