Apple的高级内存管理文档编写得非常精确,但我不知道它的图表有:
(我的是当前的修订版2011-09-28)

在图中,在alloc和之后init,引用计数(或保留计数)为1,这是基本的内存管理规则.后retain,参考计数现在是2.然后类C发送一个copy消息给对象,并且在此之后,该对象仍然具有2的参考计数的新对象具有为1的引用计数.
到目前为止,这符合规则,但接下来,在图的顶部,A类向release对象发送消息,引用计数应为1?该图有一个2代替.然后B类也向release对象发送一条消息,引用计数现在应为0.该图显示为1.这是正确的,或者可能有不同的方式来阅读图表,或者上面的某些概念可能不正确?
我认为该图在两个方面有点误导。一是对于分配和保留步骤,关联的计数是操作结果所发生的情况。然而,在释放步骤中,计数似乎是操作之前的状态。这对我来说是有意义的,因为没有“销毁”方法来导致 1 到 0 的转换。
另一个误导性的部分是,我认为保留计数不会真正为零,而且我看到人们因相信它确实为零而感到困惑。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |