2012-07-31 102 views
4

我最近升级到的Xcode 4.4,并使用它的一些Mac应用程序商店提交了两个工作得很好,但第三给这个错误:_objc_retain”,从引用:在Xcode __ ARCLite__load错误4.4

Undefined symbols for architecture x86_64: 
    "_objc_retain", referenced from: 
     ___ARCLite__load in libarclite_macosx.a(arclite.o) 
    (maybe you meant: _objc_retainedObject) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

ARC被关闭,所以我不知道这个基准是从哪里来的,或如何摆脱它。我已经试过平时清洁/构建周期,但无济于事。

有什么想法?

+0

我假设你已经尝试在Project - > Build Setting - > Architectures中将Build活动架构转换为“Yes”,对吧? – dasblinkenlight 2012-07-31 19:23:26

+1

你在这个应用程序中使用了任何支持ARC的框架吗? – 2012-07-31 20:30:17

回答

1

您的基础SDK是否低于5.0?我使用Xcode4.5,并且在构建时遇到同样的错误iOS 4.2。当我将它更改为iOS5.0(或更高版本)后,错误消失。

对不起,你谈到了Mac应用程序。但我认为原因可能是一样的。 好的,我找到了答案:将“隐式链接Objective-C运行时支持”更改为NO可能有效。

+2

将“隐式链接Objective-C运行时支持”更改为否适用于我(使用Xcode 4.4.1的iOS 4.2部署目标)。 – 2012-09-28 13:14:26

15

我认为你应该在Xcode 4.4上使用SDK 10.6,对不对? 如果是这样,请将“隐式链接Objective-C运行时支持”更改为“否”。

+2

这对我有效,但改变该设置的影响是什么? – 2012-10-18 17:47:23

+0

在使用较旧的SDK时,千万不要问*为什么*。只要感谢发布答案的人并继续前进!谢谢@aleon - 它也适用于我。 (我通过在Xcode 7中开始一个项目,使用ARC,最新SDK,然后将其转换为基于10.6 SDK的手动保留/发布版本,以便我可以测试它的一些代码以用于较旧的项目)。 – 2016-12-29 01:28:03

0

我在使用iOS 7.0的Xcode 7.0.1中遇到了同样的问题。解决方案是将部署目标从7.0更改为7.1。