该内容摘自《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法.pdf》,作为读书的笔记。
1.在类的头文件中尽量少引入其他的头文件
![](https://img.haomeiwen.com/i139494/a58e7a280585338a.png)
2、多用字面量,少用与之等价的方法
![](https://img.haomeiwen.com/i139494/f1a94d67ae6ca7c5.png)
3、多用类型常量,少用#define预处理指令
例如:
将#define ANIMTION_DURATION= 3.0替换成
static const NSTimeIntrval KAnimtionDuration = 3;
![](https://img.haomeiwen.com/i139494/d290f94168af07dd.png)
若不打算公开某个常量就应该将该常量定义在类的实现文件中
如果想对外公开某个常量,比如发出某个通知,但外界不用关心真正通知的名称,则应该这样写:
在头文件中:
extern NSString *const NotificationName;
在实现文件中:
NSString *const NotificationName = @"VAULE";
![](https://img.haomeiwen.com/i139494/42019aa1c14be04c.png)
4、使用枚举表示状态和选择等。
![](https://img.haomeiwen.com/i139494/6e002f9cf4ed7805.png)
5、理解“属性”的概念
采用属性的方式定义实例变量,系统会自动在编译的时期给该类添加上属性所对应的实例变量,并且在变量名前加上"_",还会生成setter和戈塔特人方法;
可以在实现文件中通过@synthesize方法重新指定实例变量的名字。
也可以使用@dynamic关键字,让编译器不用创建属性需要的实例变量,和创建存取方法,
属性的特性:
原子性,读写权限,内存管理语义(strong,weak,assgin,retain,copy)
方法名(gtter = <name> setter = <name>)
6、在对象内部尽量直接访问实例变量
![](https://img.haomeiwen.com/i139494/eb8bc879a39b2998.png)
7.对象等同性
![](https://img.haomeiwen.com/i139494/618700206cbb24e7.png)
8、coco中的族类
![](https://img.haomeiwen.com/i139494/074435ded7a8f45b.png)
9、在既有的类里采用关联对象存放自定义的数据
![](https://img.haomeiwen.com/i139494/760d95bde223b3f0.png)
![](https://img.haomeiwen.com/i139494/25145222bc6ce871.png)
![](https://img.haomeiwen.com/i139494/f21e259cce9d5940.png)
![](https://img.haomeiwen.com/i139494/11934888a98a400f.png)
网友评论