2012-08-09 91 views
6

Xcode 4.4,Mountain Lion,llvm 4.0编译器。我建立我的应用程序,它的工作原理上的iOS5,iOS6的设备,但与iOS 4.2的iPhone 3G我有这样的错误:Xcode 4.4,构建iOS版ARC应用程序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一切工作,因为我只用强和unsafe_unretained修饰。

我看到,没有arc库被链接到我的应用程序。

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

我想,iPhone 3g的支持将被放弃在XCode 4.5,而不是4.4。是这样吗?

+0

我可以确认运行在Mountain Lion上的Xcode版本4.4.1(4F1003)可以使用ARC(减去弱)来构建和部署项目到运行iOS 4.2.1的第二代iPod touch。 – NJones 2012-08-11 22:28:54

+0

同样的问题在这里,我还没有找到解决方案... – Andrea 2012-08-13 01:51:44

+1

Andrea,如果您使用iVersion或iRate,那么您需要更新到最新版本。 Xcode 4.4引入了一个错误,我必须解决这个问题,因为当调用类的+(void)加载方法时,ARC没有正确初始化。 – 2012-08-18 23:44:06

回答

3

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

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

+0

这是在最新版本中修复的 - 您是否尝试更新? – 2012-08-18 21:38:58

+0

是的,当然,更新后一切正常,thx!更新了答案。 – 2012-08-19 09:23:44

+0

@NickLockwood你有链接到你的解释吗?我会很感兴趣的阅读它,因为我看到类似的问题:) – 2012-08-24 21:58:50

1

尝试将-fobjc-arc加入其他链接器标记

+0

感谢您的回复,我的arc项目中有一些链接的无弧静态库。如果我将链接标志-fobjc-arc添加到我的项目中,没有任何反应,如果我将此标志添加到静态库项目中:我收到错误(“未知选项字符f中的:-fobjc-arc”),如[注释](http://stackoverflow.com/questions/8756418/static-library-with-arc-support-linked-to-non-arc-project-causing-linker-errors) – 2012-08-10 10:58:46

+0

仅将该标志添加到具有+(无效)加载方法(从构建步骤>编译) – Rivera 2012-09-05 06:20:54

相关问题