我从Apple docs获得了这张图片:
抱歉这个愚蠢的问题。有人可以解释一下这张图片吗?我的解释是:
答案 0 :(得分:1)
您误解了图表。从左到右:
答案 1 :(得分:1)
1)我们创建了一个A类对象的实例。FALSE
ClassA创建了另一个类的实例,让它们称之为ClassZ。
2)在[[ClassA alloc] init]之后,对象的保留计数为1. FALSE
它不是[[ClassA alloc] init],它是[[ClassZ alloc] init]。现在,ClassZ的实例保留计数为1。
3)在此之后,我们创建一个ClassB实例,并将他作为iVar FALSE
ClassB的一个实例只保留在步骤1中创建的ClassZ实例.ClassZ实例的保留计数变为2.
4)实例化意味着保留计数为1,所有权关系(现在A拥有B)意味着保留计数的增量为1。 (1 + 1 = 2)现在B的保留计数为2. FALSE
目前创建ClassB及其保留计数的重要性并不重要。它只是声称对ClassZ实例拥有所有权的另一个对象。
答案 2 :(得分:1)
所以, 真的很简单,按照这一点解释主线:
1-类的实例 A分配并初始化类X的对象 - > X保留计数= 1 ;
2-类 B保留X 的实例。 B如何获得X并不重要。重要的是希望拥有对象的所有权以维持它 - > X保留计数= 2 ;
3- 版本X - > X保留计数= 1;
4- B释放X - > X保留计数= 0 ; - > X已取消分配
第二部分只是解释复制一个对象,另一个对象被分配,因此,这个新对象上的相同机制对第一个对象没有影响强>