【发布时间】:2014-05-14 00:34:07
【问题描述】:
在非 ARC Objective C 环境中,我理解为什么我们必须释放一个对象:释放分配给它的内存;我理解为什么我们必须在之后将其设置为 nil(如果我们确定没有其他东西需要该实例/没有其他东西仍然可以控制该对象):以避免悬空指针。
但是我的问题是,如果所有对象都释放对一个对象的持有,例如“carInstance”,导致它的引用计数下降到 0,为什么哦,为什么这不会自动使其为零?
如果引用计数现在为 0,那么该对象是否仍然可以以任何方式使用?或者这只是我们必须做的事情之一,因为这就是没有垃圾收集的方式(不可能,一定有原因)
【问题讨论】:
-
pnizzle 询问非 ARC 环境。
-
@SeamusCampbell 哎呀,完全误读了!
-
你希望它神奇地成为
nil? -
因为它很难(编译器实现)而且速度很慢
-
指针与对象的关系是“单向”。该对象不知道是谁在指向它。指向同一个对象的不同指针也不知道彼此。您想要的行为就是创建 ARC 的原因。
标签: ios automatic-ref-counting release reference-counting