据我所知,垃圾收集在 Cocoa 中默认不启用,应该在构建设置中选择。但在构建设置中,我只能看到自动引用计数。我错过了什么?
问问题
828 次
1 回答
7
Apple 已弃用垃圾收集。您应该改用 ARC。您可以在此处找到 ARC 文档。这里有一个关于 ARC 的 WWDC 讨论
当您使用 ARC 时,对象被引用计数而不是垃圾收集。但是,您不应致电retain
或release
/ autorelease
。编译器代表您插入对retain
or release
/的调用。autorelease
在实践中,这类似于垃圾收集。您必须小心避免引用循环,这会阻止对象的引用计数变为零并阻止对象被释放。这主要是由父/子关系引入的,当一个孩子持有对它的父母的引用时,就像在大多数涉及委托的情况下发生的那样。
可以通过将父/子关系中的引用之一标记为弱引用来避免引用循环。标记为弱的属性会创建对对象的弱引用。nil
当对象的引用计数变为零时,将对对象的弱引用设置为。
我上面提到的谈话更详细。
于 2012-09-09T17:34:01.903 回答