熟悉OC(1-11)

第一条

OC语言由Smalltalk演化而来,Smalltalk语言是消息型鼻祖,消息结构和函数调用的区别如下:

//message structure

Object *obj = [Object new];

[obj preformWith:paramter1 and:paramter2];

//function calling

Object *obj = new Object;

obj->preform(paramter1,paramter2);

关键区别:消息结构运行时所执行的代码由运行环境来决定;而函数调用则由编译器决定。

第二条

在类的头文件中尽量少引入其他头文件

1.@class的使用(向前引用)

2.#import避免循环引入

3.减少代码的耦合度

第三条

多用字面量语法,少用与之等价的方法

1.代码简洁,可读性高

第四条

多用类型常量,少用#define预处理指令

第五条

用枚举表示状态、选项、状态码

1.按位或操作符定义枚举选项

2.typedef定义枚举类型

第六条

理解属性概念

1.属性为对象特性,记录对象数据的产物

2.属性特质,用于修饰属性特性,常见属性特质(atomicity,noatomic,readwrite等等)

3.getter 和 setter方法

第七条

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

1.不经由OC的“方法派发”(method dispatch)直接访问实例变量速度快

2.直接访问实例变量不会访问setter方法

3.不触发键值观察(KVO)

4.通过属性访问有助于错误排除

第八条

理解“对象等同性”

1.isEqual和hash方法

2.相同的对象具有相同的哈希吗,但是哈希码相同的对象却未必相同

3.hash时要慎重

第九条

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

1.类族模式可以实现细节隐藏

2.系统架构中经常使用

3.从类族的公开抽象基类中继承子类时要当心

第十条

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

1.可以通过“关联对象”机制来把两个对象连接起来

2.定义关联对象时可指定内存管理语义,定义属性的特质

3.只有在其他做法不可行时才应选用关联对象,此种做法会引入难以查找的bug

第十一条

理解objc_msgSend的作用

1.消息由接受者、选择子及参数构成

2.发给某对象的全部消息都由“动态消息派发系统”来处理

你可能感兴趣的:(熟悉OC(1-11))