__strong 是id类型和所有对象类型默认的所有权修饰符
__strong 表示对对象的强引用,在ARC中持有强引用变量在超出其作用域或强引用失效(如被置为nil),则引用对象被自动释放
id __strong obj1=[[NSObject alloc] init]; /*
create object A */
/*
* obj1持有对对象A的强引用
*/
id __strong obj2=[[NSObject alloc] init]; /*
create object B*/
/*
* obj2持有对对象B的强引用
*/
id __strong obj3=nil;
/*
*obj3不持有任何对象
*/
obj1=obj2;
/*
* obj1持有对对象B
* 对象A没有持有者,因此A释放
*/
obj3=obj1;
/*
* obj1,ojb2,obj3共同持有对象B
*/
obj1=nil;
/*
* ojb2,obj3共同持有对象B
*/
obj2=nil;
/*
* obj3共同持有对象B
*/
obj3=nil;
/*
* 对象B没有持有者,故释放
*/
总结:
自己生成的对象,自己持有
非自己生成的对象,自己也能持有
不再需要自己持有的对象时释放
时间: 2024-11-08 23:34:25