Effective Objective-C 2.0 学习笔记

1.objective-c 是消息结构语言, 并非函数调用语言

二者的区别在于。

消息结构语言,其运行时所应执行的代码有其运行时决定。

使用动态绑定的消息结构,只有在运行时才会检查对象的类型。

函数调用语言,有编译器决定。

2、在类的头文件中尽量少应用其他头文件。

在.h中如果不需要详细接口信息,尽量使用@class 类名,这种向前声明的方式。

可以大量减少编译时间,和两个类之间相互引用的问题,降低彼此的依赖度。

如果是继承某个类,或者遵循某个类的协议就必须导入完整的头文件。

3.多用字面量语法创建字符

用字面量语法创建数组或字典时,若有nil 则会抛出异常,务必确保值里面不含nil

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

#define 会将后面遇到的所有替换。切不能显示数据类型。

static const数据类型常量明等同于#define(只在编译单元内可见)

全局符号表

extern NSString *const name;

5、用枚举类型表示状态。选项。状态码;

消息传递: 在对象之间传递数据并执行任务的过程、

runtime 程序运行起来后提供相关支持的代码叫运行时环境,它提供了

使得对象之间能后传递消息的重要函数。并且包含了创建的全部逻辑。

6属性

assign针对纯量类型进行简单的复制操作(CGFolat NSInteger)

strong 定义了一种拥有关系,,为这种属性赋值时,会先保留新值,并释放旧值,在将新值添加上去。

week 定义了一种非拥有关系,为这种属性复制是, 既不保留新值,也不释放旧值。此特质与assgin 类似。

但是,在属性所指的对象销毁时,属性值也会被清空。

unsafe_unretained  语义和assign相同,但他适用于” 对象类型”,表达一种非拥有关系,不保留。

当目标对象遭到摧毁时,属性值不会自动清空。

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

写入数据时,应该通过属性去写

在初始化方法和dealloc 方法中,总是应该直接通过实例变量来读取数据

你可能感兴趣的:(Effective Objective-C 2.0 学习笔记)