《编写高质量iOS与OS X代码的52个有效方法》读书笔记(2)

2018-07-24  本文已影响0人  LeeTrombone

第2章

6.理解“属性”这一概念

<strong>属性最终还是得通过实例变量来实现</strong>
(1)使用@property语法,OC就可以根据名称自动创建出存取方法。

(2)属性特质

1.assign “设置方法”只会执行针对“纯量类型”(CGFloat,NSInteger等)的简单赋值操作。
2.strong 此特质表明该属性定义了一种“拥有关系”。为属性设置新值时,设置方法会先保留新值,并释放旧值,然后再将新值设置上去。
3.weak 此特质表明该属性定义了一种“非拥有关系”。为属性设置新值时,设置方法既不保留新值,也不并释放旧值。此特质与assign类似,在属性所指的对象遭到摧毁时,属性值会被置为nil。
4.unsafe_unretained 此特质的语义与assign相同,但它适用于“对象类型”,该特质表达一种“非拥有关系”(“不保留”,unreatined),当目标对象被销毁时,属性值不会自动情空,这与weak不同。
5.copy 此特质所表达的所属关系与strong类似。设置方法并不保留心智,而是将其“拷贝”。当属性类型为NSString*时,经常用此特质保护其封装性。

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

在读取实例变量的时候采用直接访问的形式,而在设置实例变量的时候通过属性来做。

(1)两种写法的区别

上一篇 下一篇

猜你喜欢

热点阅读