编写高质量IOS代码(二)

来源:互联网 发布:淘宝卖家使用尺码 编辑:程序博客网 时间:2024/06/05 02:17

1.属性

a.属性(property)是objective-C的一项特性,用于封装数据。
b.使用属性,编译器会自动合成(autosynthesis)访问方法和相应的实例变量(下划线开头的)
c.属性特质(原子性,读写权限,内存管理语义,方法名)

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

a.直接访问实例变量,不经过方法派发(method dispatch),不调用设置方法,不触发KVO,更快。
b.初始化和dealloc方法中,要使用实例变量来读写数据,因为设置方法有可能被子类覆写(override)
c.惰性初始化,要通过属性来访问

3对象的同等性

a.==只比较了指针本身(内存地址)
b.应该使用 isEqual: 方法来比较

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

a.类族模式可以把实现细节隐藏在一套简单的公共接口后面
b.系统框架经常使用类族(NSArray)

5.使用关联对象存放自定义数据

a.可以通过“关联对象”机制来把两个对象连起来
b.在非匿名分类中,扩展属性

6.理解objc_msgSend

其原型 void objc_msgSend(id self,SEL cmd,…)

7.消息转发机制

a.动态方法解析(resolveInstanceMethod)
b.备援接受者(forwardingTargetForSelector)实现多重继承,消息转发链
c.完整消息转发(forwardInvocation)

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

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

a.每个实例都有一个指向Class对象的指针,用以表示其类型,而这些class对象则构成了类的继承体系
b.用 类型信息查询方法 来确定对象类型,不要直接比较类的对象

0 0