xcode 4 垃圾收集已删除?

Posted

技术标签:

【中文标题】xcode 4 垃圾收集已删除?【英文标题】:xcode 4 garbage collection removed? 【发布时间】:2011-07-24 22:13:13 【问题描述】:

我正在学习 Xcode 和 Objective c,但我正在阅读的书使用的是旧版本 (3.2) 的 Xcode。有一章完全专注于内存和泄漏,说我需要通过 Project Settings > Build 打开垃圾收集。但是,我找不到垃圾收集设置。它是被删除了还是我只是想念它?

【问题讨论】:

感谢您提出这个问题,我想知道垃圾收集自己去哪里了。 【参考方案1】:

Xcode 4 仍然有垃圾收集,你所做的就是进入你的项目(导航栏中的顶部选项,带有大的 xcode 项目图标)。选择您的目标,它应该只是您的应用程序的名称,旁边有应用程序图标。当您选择它时,顶部会出现一个带有不同选项的栏,例如摘要、信息、构建设置等。点击“构建设置”并在搜索字段中输入“垃圾”。然后将垃圾收集设置为必需。

关于 GC 的一个非常重要的注意事项是,从 Mac OS 10.8 开始正式弃用它,这意味着您应该尽可能将代码转换为 ARC,因为 GC 可能不会存在太久。

更新:查看在当前版本的 Xcode 中启用 GC 的其他答案。如上所述,如果您还没有过渡到 ARC,那么您应该过渡到 ARC。

【讨论】:

在 Xcode 4.4 中搜索垃圾不会返回任何内容,因为构建设置现在是用户定义的。请参阅我的 Xcode 4.4 回复。 @Jonathan Mitchell,对。点击底部的“添加构建设置”,并添加:GCC_ENABLE_OBJC_GC 可能的值: required, supported, unsupported 现在,如果您在搜索字段中查找“垃圾”,ARC 会出现在搜索结果中。所以,我认为没有垃圾回收,ARC 取代了它。【参考方案2】:

从 XCode 4.4 开始,垃圾收集构建标志是用户定义的(请参阅构建设置列表的最后)。

GCC_ENABLE_OBJC_GC supported

有效的构建设置是:

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

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

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

【讨论】:

【参考方案3】:

Xcode 4 非常全面地支持垃圾收集。Xcode 4 本身就是一个 GC'd 应用程序。

GC 在 ios 中也非常不可用。如果您正在编写 iPhone/iPad 应用程序,则无法使用 GC。

【讨论】:

谢谢你!我正在阅读的书中实际上提到了你。 Cocoa 编程 - Daniel Steinberg 的开发人员快速入门指南(第 76 页)。我希望有一天我和你一样好。【参考方案4】:

这是一个挑战,但您或许能够完成它 - 这是与 PDF 生成相关的思考起点:

iOS SDK - Programmatically generate a PDF file

如果你能大致了解那里发生的事情,你可能会没事。

【讨论】:

OP 标记为“mac”而不是“iOS”——你知道该链接是否仍然适用吗? 基本上,是的(尽管 Mac 上的 PDF 生成可能并没有像他提到的那样被破坏)。但是基本的 PDF 生成类是相同的。尽管您不能在 Mac 上使用 UIKit,但创建 xib 可能是一个不同的过程。很抱歉错过了 Mac 标签。【参考方案5】:

Xcode 3.2 仍然可以下载 - 事实上,3.2.6 是在过去一两周内发布的,所以它并不完全是“老旧的”。 :-) Xcode 4 的界面非常 不同,所以考虑到您的时间紧迫并且需要从一开始,您现在最好使用 3.2。这肯定会让你使用这本书变得更容易。

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于xcode 4 垃圾收集已删除?的主要内容,如果未能解决你的问题,请参考以下文章

JVM垃圾收集机制

Java虚拟机9:垃圾收集(GC)-4(垃圾收集器)

碎片垃圾收集

JVM之垃圾收集算法与垃圾收集器

在 AS3 中强制垃圾收集?

垃圾收集器与内存分配策略