目录
- 变量限定符
- 属性限定符
变量限定符
ARC 为变量提供了四种生命周期的限定符:
1、_strong: 默认限定符号,无需显示引入。只要有强引用指向,对象就会长时间驻留在内存中。理解为retain调用的ARC版本。
2、_weak:当没有强引用指向对象时,弱引用会被置为nil。
3、_unsafe_unretained : 与_weak类似,但当没有强引用指向对象时,不会被置为nil;
4、_autoreleasing:用于由引用使用id *传递的消息参数。它将预示在传递参数的方法中调用autorelease方法。
//创建对象后引用计数为1,并且对象在c1引用期间不会被回收
Cat * _strong c1 = [[Cat alloc] init];
//创建对象后引用计数为0,对象会被立即释放,且c2被置为nil
Cat *_weak c2 = [[Cat alloc] init];
//创建对象后引用计数为1,对象会被立即释放,且c3不会被置为nil
Cat *_unsafe_unretained c3 = [[Cat alloc] init];
//创建对象后引用计数为1,当方法返回时,对象会被立即释放
Cat *_autoreleasing c4 = [[Cat alloc] init];
属性限定符
属性共有六种关系限定符:
1、strong: 默认符,指定_strong关系,修饰引用类型。
2、weak:表示_weak关系。
3、assign : 表示_unsafe_unretained关系,修饰值类型。
4、unsafe_unretained : 表示_unsafe_unretained 关系
5、retain : _strong 关系。
6、copy :也表示_strong 关系,该修饰符表示属性的setter方法中会copy一份传。
网友评论