id __strong obj0 = [[NSObject alloc]init];/*对象A*/
//obj0 持有对象A的强引用
id __strong obj1 = [[NSObject alloc]init];/*对象B*/
//obj1 持有对象B的强引用
id __strong obj2 = nil;
//obj2 不持有任何对象
obj0 = obj1;
//obj0持有由obj1赋值的对象B的强引用,
因为obj0被赋值,所以原来的对 对象A的强引用失效了.
对象A的所有者不存在,因此废弃对象A.
此时,持有对象B的强引用变为obj0和obj1.
obj2 = obj0;
//obj2持有由obj0 赋值的对象B的强引用
此时,持有对象B的强引用的对象变为obj0,obj1,obj2.
obj1 = nil;
//因为obj1赋予了nil,所以对对象B的强引用失效了.
此时,对象B的强引用变为obj0和obj2.
obj0 = nil;
//因为obj0赋予了nil,所以对对象B的强引用失效了.
此时,对象B的强引用变为obj2.
obj2 = nil;
//因为obj2赋予了nil,所以对对象B的强引用失效了.
对象B的所有者不存在,因此废弃对象B