【问题标题】:_objc_retain", referenced from:__ARCLite__load error in Xcode 4.4_objc_retain”,引用自:Xcode 4.4 中的__ARCLite__load 错误
【发布时间】:2012-07-31 19:06:51
【问题描述】:

我最近升级到 Xcode 4.4,并一直在使用它提交一些 Mac App Store。两个工作正常,但第三个给出了这个错误:

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 已关闭,因此我不知道此引用来自何处,或者如何摆脱它。我尝试了通常的清理/构建周期,但无济于事。

有什么想法吗?

【问题讨论】:

  • 我假设您已经尝试在 Project -> Build Setting -> Architectures 中将 Build active architecture only 设置为“Yes”,对吧?
  • 您是否在此应用程序中使用任何支持 ARC 的框架?

标签: objective-c xcode automatic-ref-counting xcode4.4


【解决方案1】:

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

【讨论】:

  • 这对我有用,但更改该设置有什么影响?
  • 在使用旧版 SDK 时不要问为什么。只需感谢发布答案的人并继续前进!谢谢@aleon - 它也对我有用。 (我通过在 Xcode 7 中启动一个项目,使用 ARC,最新的 SDK,然后将其转换为使用手动保留/释放的 10.6 SDK 构建,这样我就可以测试它的一些代码以在旧项目中使用。)
【解决方案2】:

您的基础 sdk 是否低于 5.0?我用的是Xcode4.5,在用iOS 4.2编译的时候出现同样的错误,改成iOS5.0(或以上)后,错误消失了。

对不起,你谈到了 Mac 应用程序。但我认为原因可能是一样的。 OK,我找到了答案:将“Implicitly Link Objective-C Runtime Support”改为NO可能会起作用。

【讨论】:

  • 将“隐式链接 Objective-C 运行时支持”更改为 NO 对我有用(iOS 4.2 部署目标与 Xcode 4.4.1)。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    相关资源
    最近更新 更多