1

据我所知,垃圾收集在 Cocoa 中默认不启用,应该在构建设置中选择。但在构建设置中,我只能看到自动引用计数。我错过了什么?在此处输入图像描述

4

1 回答 1

7

Apple 已弃用垃圾收集。您应该改用 ARC。您可以在此处找到 ARC 文档。这里有一个关于 ARC 的 WWDC 讨论

当您使用 ARC 时,对象被引用计数而不是垃圾收集。但是,您不应致电retainrelease/ autorelease。编译器代表您插入对retainor release/的调用。autorelease在实践中,这类似于垃圾收集。您必须小心避免引用循环,这会阻止对象的引用计数变为零并阻止对象被释放。这主要是由父/子关系引入的,当一个孩子持有对它的父母的引用时,就像在大多数涉及委托的情况下发生的那样。

可以通过将父/子关系中的引用之一标记为弱引用来避免引用循环。标记为弱的属性会创建对对象的弱引用。nil当对象的引用计数变为零时,将对对象的弱引用设置为。

上面提到的谈话更详细。

于 2012-09-09T17:34:01.903 回答