Xcode 4垃圾回收被移除了吗?

9

我正在学习Xcode和Objective-C,但我正在阅读的书使用旧版本(3.2)的Xcode。其中一个章节完全专注于内存和泄漏,说我需要通过“项目设置”>“构建”打开垃圾回收。然而,我找不到垃圾回收设置。它是否已被删除或者我只是错过了它?


谢谢你问这个问题,我自己也在想垃圾回收去哪了。 - sudo rm -rf
6个回答

8
Xcode 4仍然支持垃圾回收,您只需要进入项目(导航栏中具有大型Xcode项目图标的顶部选项)。选择您的目标,它应该只是您的应用程序名称和应用程序图标旁边。当您选择它时,顶部有一个带有不同选项的条形菜单,例如摘要、信息、构建设置等。点击“构建设置”,在搜索字段中输入“garbage”。然后将垃圾回收设置为必需。
关于GC的一个非常重要的注意事项是,它正式在Mac OS 10.8中被弃用,这意味着如果可能的话,您应该将代码转换为ARC,因为GC可能不会再存在很久了。
更新:查看其他答案以启用当前版本的Xcode中的GC。正如我上面所说,如果您还没有做到,应该开始转换为ARC。

在Xcode 4.4中搜索Garbage将返回空值,因为构建设置现在是用户定义的。请参阅我的Xcode 4.4回复。 - Jonathan Mitchell
@Jonathan Mitchell,对的。在底部点击“添加构建设置”,然后添加:GCC_ENABLE_OBJC_GC,可能的值为:{required, supported, unsupported}。 - Bobjt
现在,如果您在搜索栏中搜索“垃圾”,ARC会出现在搜索结果中。因此,我认为没有垃圾收集,ARC取代了它。 - Dima Deplov

4
自 XCode 4.4 起,垃圾回收构建标志是用户自定义的(请参见构建设置列表的末尾)。
GCC_ENABLE_OBJC_GC supported

有效的构建设置包括:

  • 不支持:应用程序无法加载需要垃圾回收的代码。不能由需要垃圾回收的应用程序加载可加载的捆绑包。

  • 支持:应用程序可以加载支持或需要垃圾回收的代码。可由任何级别的垃圾回收支持的应用程序加载可加载的捆绑包。

  • 必需:应用程序只能加载支持垃圾回收的代码。可由仅支持垃圾回收的应用程序加载可加载的捆绑包。


2

Xcode 4非常支持垃圾收集。Xcode 4本身是一个GC应用程序。

然而,在iOS上无法使用GC。如果你在写iPhone/iPad应用程序,就不能使用GC。


谢谢 bbum!你实际上在我正在阅读的书中被提到了。 - jerry
Cocoa编程 - 开发人员快速入门指南,作者Daniel Steinberg(第76页)。我希望有一天我能和你一样优秀。 - jerry

1

这是一个挑战,但你可能可以完成它——以下是关于生成PDF的思路起点:

iOS SDK - 以编程方式生成PDF文件

如果你能基本理解那里正在发生什么,你可能会没问题。


OP使用了“mac”标签而不是“iOS”,你知道链接是否仍然适用吗? - Richard
基本上是的(尽管Mac上的PDF生成可能不像他所说的那样出问题)。但基本的PDF生成类是相同的。创建xib可能需要不同的过程,因为在Mac上无法使用UIKit。很抱歉忘记了Mac标签。 - Kendall Helmstetter Gelner

1

Xcode 3.2仍然可以下载 - 实际上,3.2.6是在过去一两周内发布的,所以它并不算是“老又落后”。 :-) Xcode 4的界面非常不同,因此考虑到您紧张的时间表和从零开始的需求,现在使用3.2可能更好。这肯定会使您更容易使用您拥有的书。


1

从Xcode 4.3.3开始,在“Apple LLVM编译器3.1-语言”部分下,参数“Objective-C垃圾回收”的唯一可用设置是,您的目标应用程序的构建设置=“不支持”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接