第一条,了解Objective-C起源
1.Objective-C在C语言的基础上添加了面向对象的特性。
2.Objective-C由Smalltalk演化而来,使用消息结构。
3.Objective-C是动态语言,总是在运行时才会去查找运行的方法,并且程序的运行由运行环境决定。
4.对像分配在堆中,指向对象的变量储存在栈中。
第二条,在类的头文件中尽量少引入其他头文件
1.在头文件中尽量使用@Class向前引用的方式引入其他头文件。
2.在实现文件中使用@import引入其他头文件,避免循环引用头文件,减少编译时间。
3.在实现文件的class-continu中遵循delegate。
4.如果不能把protocl在头文件中申明,就单独写一个.h文件申明protocl。
第三条,多用字面量语法,少用与之等价的方法
非字面量 | 字面量 |
---|---|
NSNumber *someNumber = [NSNumber numberWithInt:1]; | NSNumber *someNumber = @1; |
1.字面数值
非字面量 | 字面量 |
---|---|
NSNumber *someNumber = [NSNumber numberWithInt:1]; | NSNumber *someNumber = @1; |
非字面量 | 字面量 |
---|---|
NSNumber *animals = [NSArray arrayWithObjects:@"cat",@"dog",@"mouse",@"badger",nil]; | NSNumber *someNumber = @[@"cat",@"dog",@"mouse",@"badger"]; |
2.字面量数组
非字面量 | 字面量 |
---|---|
NSNumber *animals = [NSArray arrayWithObjects:@"cat",@"dog",@"mouse",@"badger",nil]; | NSNumber *someNumber = @[@"cat",@"dog",@"mouse",@"badger"]; |
3.字面量字典
...........
Note:
1.字面量语法除了字符串以外,所创建出来的对象必须属于Foundation框架。
2.使用字面量语法创建出来的字符串,数组,字典对象都是不可变的。
第四条,多用类型常量,少用#define预处理指令
预处理:
1.预处理定义出来的常量没有类型信息。
2.预处理过程会把碰到的所有定义的关键字一律替换成赋的值,这样的话如果这个指令在某个头文件中,如果引用这个头文件,那么所有关键词都会被替换。
常量类型:
1.若不打算公开某个常量,那么就把常量定义在实现文件里。
2.变量一定要同时用static与const来声明,如果试图修改由const修饰的变量,编译器就会报错。而static修饰符则意味着该变量仅在此变量的编译单元可见。
第五条,用枚举表示状态、选项、状态码
typedef NS_ENUM(NSUinteger,EOCConectionState) {
EOCConnectionStateDisconnected,
EOCConnectionStateConnecting,
EOCConnectionStateConnected
};
typedef NS_OPTIONS(NSUInteger,EOCPermittedDirection) {
EOCPermittedDirectionUp = 1 << 0,
EOCPermittedDirectionDown = 1 << 1,
EOCPermittedDirectionLeft = 1 << 2,
EOCPermittedDirectionRight = 1 << 3.
};