Objective-C之修饰属性的关键字

iOS开发-修饰属性的关键字

关键字类别

读写权限

关键字名称顾名思义关键字描述
readonly只读只具有get方法
readwrite(默认)读写同时具有set和get方法

原子性

关键字名称顾名思义关键字描述特点
atomic(默认)原子的生成setter方法的代码会被加上线程安全锁安全、效率低
nonatomic非原子的生成setter方法的代码不会被加上线程安全锁效率高、不安全

内存管理

关键字名称顾名思义所属时期关键字描述修饰类型
retain保留MRC生成setter方法时,先判断新旧对象是否为同一个对象,如果不是,release(释放)旧的对象,retain(保留)新的对象只能修饰NSObject对象,不能修饰基本的数据类型
assign分配MRC生成settet方法时,直接赋值可以修饰基础数据类型和NSObject对象
strong强的ARC对对象强引用,每对这个属性引用一次,引用计数就会+1只能修饰NSObject对象,不能修饰基本的数据类型,是id和对象的默认修饰符
weak弱的ARC对对象弱引用,引用对象时,引用计数不变只能修饰NSObject对象,不能修饰基本的数据类型,防止循环引用,delegate一般都用weak修饰
copy复制不属于某个特定时期用于对象的拷贝只能修饰NSObject对象,不能修饰基本的数据类型,多用于NSString类型

浅拷贝:拷贝指向某一内存的指针,但是在内存中并没有开辟一块新的空间。此时retainCount+1,这个+1是指原对象的引用计数+1。

深拷贝:拷贝一个完整的对象,且在内存中开辟了一块新的空间。此时原对象引用计数不变,新对象引用计数+1

对于不可变对象,使用copy是浅拷贝,使用mutableCopy是深拷贝
对于可变对象,使用copy与mutableCopy都是深拷贝

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值