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

今日长缨在手,何时缚住苍龙。这篇文章主要讲述当前关于高级内存管理的Apple文档是否存在轻微的不准确之处?相关的知识,希望能为你提供帮助。
Apple的Advanced Memory Management doc写得非常精确,但是我想知道它的图表:
(我的是当前的修订版2011-09-28)

在图中,在allocinit之后,引用计数(或保留计数)为1,这是基本的内存管理规则。在retain之后,引用计数现在是2.然后C类向对象发送copy消息,之后,对象仍然具有引用计数2.新对象的引用计数为1。
到目前为止,这符合规则,但接下来,在图的顶部,A类向对象发送release消息,引用计数应为1?该图有一个2代替。然后B类也向对象发送release消息,引用计数现在应为0.该图显示为1。这是正确的,或者可能有不同的方式来阅读图表,或者上面的某些概念可能不正确?
答案我认为这个图表在两个方面有点误导。一个是对于alloc和retain步骤,相关的计数是由于操作而发生的。但是,在释放步骤中,计数似乎是操作之前的状态。这对我来说是有意义的,因为没有“Destroyed”方法可以导致1到0的转换。
【当前关于高级内存管理的Apple文档是否存在轻微的不准确之处()】另一个误导性的部分是,我认为保留计数不会真正归零,而且我看到人们因为相信它而感到困惑。
另一答案简单地读作:在发布消息之前它的保留计数为2,然后是1。
为了更好地理解,最好将保留计数放在retain / alloc消息中对象圈的右侧。

    推荐阅读