《Effective Objective-C 2.0》读书笔记(

2017-12-18  本文已影响12人  习惯有你syh
6、理解“属性”这一概念
//这句代码等同于定义了一个名为_name的成员变量,声明并实现了它的setter方法以及getter方法
@property (nonatomic, copy) NSString *name;
属性特质

使用属性时要注意其各种特质,特质的设定也会影响编译器所生成的存取方法。比方下面这个属性就制定了三项特质:

@property  (nonatomic, readwrite, copy) NSString *firstName;

属性可以拥有的特质分为四类:

①原子性:

在默认情况下,由编译器所合成的方法会通过锁定机制来确保其原子性(atomicity)。如果属性具备nonatomic特质,则不适用同步锁。请注意,尽管没有名为”atomic“的特质(如果某属性不具备nonatomic特质,那它就是”原子的“(atomic)),但是仍然可以在属性特质中写明这一点,编译器不会报错。若是自己定义存取方法,那么应该遵从与属性特质相符的原子性。

②读/写权限
③内存管理语义
④方法名

可通过如下特质来指定存取方法的方法名:

7、在对象内部尽量直接访问实例变量

写入实例变量时,通过setter方法来做,而在读取变量时,则直接访问。此方法技能提高读取操作的速度,又能控制对属性的写入操作。

使用点语法和直接访问变量两种方式访问变量有一下几个区别:
上一篇 下一篇

猜你喜欢

热点阅读