Xcode 4.4,Mountain Lion,llvm 4.0编译器。我构建我的应用程序,它适用于ios5,ios6设备,但在带有ios 4.2的iphone 3g上我有这样的错误:
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。是这样吗?
答案 0 :(得分:3)
我刚发现问题。错误是因为iRate库,当我删除对此lib的引用时,一切都开始工作。
更新:更新到最新版本后,一切都很好。谢谢@Nick Lockwood的解释:在iOS上,arclite lib在 [类加载]方法执行后加载。所以你需要延迟初始化。在iRate中,他在load方法中插入了performOnTheMainThread。
答案 1 :(得分:1)
尝试在其他链接标记中添加-fobjc-arc
。