变量限定符和属性限定符

目录

  • 变量限定符
  • 属性限定符

变量限定符

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一份传。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容