Apple PrefPane示例无法构建,并且clang错误反对-fobjc-arc和-fobjc-gc

时间:2012-04-13 19:16:53

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

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

clang:错误:无法同时指定'-fobjc-arc'和'-fobjc-gc'

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

“您无法打开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设置是什么?

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:3)

我自己偶然发现了这一点。事实证明(根据Apple开发人员文档):

  

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

     

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

有关详细信息,请转到Updating Preference Panes for Snow Leopard and Beyond

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