@property二三事

首先说一下@property的构成。原子性:atomic,nonatomic;读写性:readonly,readwrite;内存管理:这个之后详细分析;最后就是读写方法:setter=method, getter=method,一般getter=method比较常见。多用于布尔值(oc中布尔值前面一般是is,例isClose)。默认值分别是atomic,readwrite, strong(ARC)/retain(MRC)。

原子性一般牵涉多线程。atomic表示安全的多线程环境。好比对于这个属性加了个对象级别锁。同一时间内只允许一个线程对它访问。看起来很厉害。然并卵。atomic严重影响运行效率,一般情况的都是使用nonatomic。在swift中,@property不需要再考虑原子性,都是nonatomic。

读写性:readonly,只读;readwrite,读写皆可;

关于内存管理,@property要分ARC环境和MRC环境。二者的关键字不同。ARC和MRC本质都是对于retainCount的管理(仅管理堆区的内存)。回归主题,MRC关于内存管理的关键字有assign,retain,copy。ARC关于内存管理的关键字有assign,weak,strong,copy。

读写方法的话就是可以改变默认的getter和setter。比如所定义了一个布尔属性close,getter=isClose后,getter方法就是isClose,而不是默认的close。

另外讲讲@synthesis。

在初始的oc中@property和@synthesize是配对使用的。Xcode4.5后@property有auto synthesize (编译期间),自动生成对应的成员变量ivar。@synthesize就不再那么频繁的使用了。但@synthesize并非无用。属性重载时,子类必须 @synthesize 该属性,因为@property不会自动生成这个成员变量。此外,extension中的@property的属性。如果同时复写了setter和getter方法,就必须@synthesis这个属性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值