Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 4.4,为iOS 4.2构建带有ARC的应用程序_Ios_Xcode_Automatic Ref Counting_Llvm - Fatal编程技术网

Xcode 4.4,为iOS 4.2构建带有ARC的应用程序

Xcode 4.4,为iOS 4.2构建带有ARC的应用程序,ios,xcode,automatic-ref-counting,llvm,Ios,Xcode,Automatic Ref Counting,Llvm,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/iGu

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上,一切都正常,因为我只使用了强且不安全的未修复修饰符

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

我试着手动链接到libarclite_iphoneos。a,没有反应。 我在链接标志中添加了-fobj弧,没有反应


我想,iPhone3G支持将在XCode 4.5中取消,而不是在4.4中。是这样吗?

尝试在其他链接器标志中添加
-fobjc arc

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


Upd:升级到最新版本后,一切都很好。感谢@Nick Lockwood的解释:在iOS上,在执行[class load]方法之后加载arclite库。因此,您需要延迟初始化。在愤怒中,他在load方法中插入了PerformMontheMainThread。

感谢您的回复,我有一个带有一些链接的无弧静态库的arc项目。如果我将link flag-fobjc arc添加到我的项目中,什么也不会发生,如果我将此标志添加到静态库项目中:我收到错误(“未知选项字符'f'in:-fobjc arc”),就像在将该标志仅添加到具有+(void)加载方法的文件中一样(从构建步骤>编译),我可以确认Xcode版本4.4.1(4F1003)在Mountain Lion上运行可以使用ARC(负
weak
s)构建并部署一个项目到运行iOS 4.2.1的第二代iPod touch。同样的问题,我还没有找到解决方案……Andrea,如果您使用的是iVersion或iRate,那么您需要更新到最新版本。Xcode 4.4引入了一个我必须解决的错误,在调用类的+(void)load方法时ARC没有正确初始化。这在最新版本中得到了修复-您尝试过更新吗?是的,当然,在更新一切正常后,thx!更新的答案。@NickLockwood您这里有您的解释的链接吗?我很有兴趣阅读它,因为我看到了一个类似的问题:)@NickLockwood实际上我想我现在理解pilot34的描述了。你延迟的初始化对我也有效——除了我使用GCD。谢谢基本上,如果你在类的+(void)load方法中启用了ARC,那么它就会在ios4.x上爆炸。您仍然可以使用load方法,但是告诉它在主线程上调用另一个方法,这样执行会延迟到主运行循环启动之后,此时ARCLite已正确初始化。(注意:这也会影响同样使用ARCLite的Mac OS 10.6.x)。