oc 生成并持有对象的强引用

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

 

posted on 2017-03-11 16:39  开花结果乐园  阅读(162)  评论(0编辑  收藏  举报

导航