Effective Objective-C 2.0(第2章)

2018-08-29  本文已影响8人  ChancePro

编写高质量iOS与OS X代码的52个有效方法

第2章 对象、消息、运行期

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

可以使用@synthesize语法来指定实例变量的名字。
atomic同步锁会严重影响性能,并且并不能保证线程安全。所以使用nonatomic。
atomic为什么不能保证线程安全?例:一个线程在连续多次读取某属性值的过程中有别的线程在同时改写该值,那么即便将属性声明为atomic,也还是会读到不同的属性值。

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

在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应该通过属性来写(set方法,为了触发KVO)。
在初始化方法和dealloc方法中,总是应该直接通过实例变量来读写数据。
使用懒加载时,需要通过属性来读取数据。(get方法)

8.理解“对象等同性”这一概念

== 比较的是两个指针本身,而不是所指的对象。
isEqual 比较的两个对象。
相同的对象必须具有相同的哈希码,但是两个哈希码相同的对象却未必相同。
不要盲目地逐个检测每条属性,而是应该依照具体需求来制定监测方案。
编写hash方法时,应该使用计算速度快而且哈希码碰撞几率低的算法。

9.以“类族模式”隐藏实现细节

10.在既有类中使用关联对象存放自定义数据

objc_setAssociatedObject
objc_getAssociatedObject
objc_removeAssociatedObject

11.理解objc_msgSend的作用

12.理解消息转发机制

13.用“方法调配技术”调试“黑盒方法”

14.理解“类对象”的用意

上一篇 下一篇

猜你喜欢

热点阅读