当前关于高级内存管理的Apple文档是否存在轻微的不准确之处?

Jer*_*y L 5 cocoa objective-c

Apple的高级内存管理文档编写得非常精确,但我不知道它的图表有:

(我的是当前的修订版2011-09-28)

在此输入图像描述

在图中,在alloc和之后init,引用计数(或保留计数)为1,这是基本的内存管理规则.后retain,参考计数现在是2.然后类C发送一个copy消息给对象,并且在此之后,该对象仍然具有2的参考计数的新对象具有为1的引用计数.

到目前为止,这符合规则,但接下来,在图的顶部,A类向release对象发送消息,引用计数应为1?该图有一个2代替.然后B类也向release对象发送一条消息,引用计数现在应为0.该图显示为1.这是正确的,或者可能有不同的方式来阅读图表,或者上面的某些概念可能不正确?

Phi*_*lls 4

我认为该图在两个方面有点误导。一是对于分配和保留步骤,关联的计数是操作结果所发生的情况。然而,在释放步骤中,计数似乎是操作之前的状态。这对我来说是有意义的,因为没有“销毁”方法来导致 1 到 0 的转换。

另一个误导性的部分是,我认为保留计数不会真正为零,而且我看到人们因相信它确实为零而感到困惑。