【问题标题】:Apple PrefPane example fails to build with clang error objecting to both -fobjc-arc and -fobjc-gcApple PrefPane 示例无法构建,并出现同时反对 -fobjc-arc 和 -fobjc-gc 的 clang 错误
【发布时间】:2012-04-26 04:19:15
【问题描述】:

我正在尝试构建一个首选项窗格,作为学习 OS X 开发的一部分。下载 Apple 的 preference pane example code 并尝试构建项目后,出现以下错误:

clang:错误:不能同时指定“-fobjc-arc”和“-fobjc-gc”

在构建设置中关闭垃圾收集允许项目正确构建,但是一旦在本地机器上安装了首选项窗格示例,它就不会开始说,

“您无法打开 PrefsPane 首选项,因为它不适用于基于 Intel 的 Mac。”

我已经尝试过架构(10.6、10.7)和 Objective-C 自动引用计数(是、否)和 Objective-C 垃圾收集(支持 (-fobjc-gc)、不支持、必需 (-fobjc- gc only) 可用。虽然某些组合确实允许构建项目,但我无法加载首选项窗格。

使用 Xcode 4.3.2 为 OS X 10.7 构建和部署首选项窗格所需的适当架构、ARC 和 GC 设置是什么?

【问题讨论】:

  • 保留 Apple 提供的所有设置并在 Build Settings 中关闭 ARC 即可解决问题。

标签: xcode4 garbage-collection osx-lion automatic-ref-counting clang


【解决方案1】:

在关闭垃圾收集并在构建设置中启用 ARC 的情况下构建的 PrefsPane 可在 Mac OS X 10.8.2 上运行。 “System Preferences.app”只显示一条消息:

    To use this preferences pane, System Preferences must quit and reopen.

这是因为系统偏好设置是在默认情况下启用垃圾收集启动的,如果它试图在没有 GC 的情况下打开偏好设置窗格,它也应该在没有 GC 的情况下重新启动。 因此 ARC 可以在 10.8 上用于开发首选项窗格。

【讨论】:

    【解决方案2】:

    我自己偶然发现了这个。结果是(根据 Apple 开发文档):

    所有 64 位首选项窗格都应使用垃圾回收。在大多数情况下,使用垃圾回收可以简化您的代码并减少内存泄漏的可能性。

    在 Snow Leopard 中,系统偏好设置应用程序将运行启用垃圾收集的 64 位偏好窗格和禁用垃圾收集的 32 位窗格。

    欲了解更多信息,请访问Updating Preference Panes for Snow Leopard and Beyond

    所以你不能使用 ARC。只有 GC。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多