Effective Objective-C 03-04

一、多用字面量语法**

1、字面量语法指的是直接使用@加上值对Foundation的常用的类进行初始化,例如NSString,NSArray,NSDictionary,NSNumber。
2、字面量语法的好处就是缩短源代码的长度,增加可读性与整洁度。
3、使用字面量创建数组或者字典对象的时候,比使用非字面量创建数组对象的好处就是在字面量创建数组或者对象时如果值为nil就会报出异常,而非字面量创建数组或者字典对象不会报异常,直到读取数组或者字典中的值为nil的时候才会报异常。所以使用字面量语法更为安全。

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

1、声明一个常量时我们经常会用到#define TIMEINTERVAL 1.0之类的预处理指令。但是使用这样的预处理指令在引入头文件之后,所有的TIMEINTERVAL都会被设置为1.0,且TIMEINTERVAL的类型并没有明确说明。
2、解决方案:使用static const CGFloat kTimeInterval = 1.0;这样的语法对常量进行定义。这样的好处是明确地指明了该常量的类型,增加了阅读性。ps:开头加上k表示常量,使用staic和const进行声明的好处是当尝试对常量进行改变的时候编译器就会报错提醒,添加staic的原因是为了防止当多个.m文件中声明了命名一样的常量时报错,报错的原因是使用const字段时编译器会创建一个外部符号,如果存在两个一样的外部符号那么就会报错,等同于创建了两个一样变量名的变量一样。添加了static就不会创建外部符号,所以不存在一样符号名的问题自然也不会编译报错。
3、若类型常量不需要公开,那么不应该添加在头文件中,而是在实现文件即.m文件中进行声明。
4、如果需要对类型常量进行公开那么在实现文件中的类型常量就要定义为CGFloat const kTimeInterval = 1.0;而在头文件中,需要使用extern关键字对类型常量进行声明extern CGFloat const kTimeInterval;。即相当于在头文件中声明,在实现文件中定义。
5、注意类型常量的命名,防止命名冲突导致数据对不上。一般使用类名作为前缀来区分。例如:UIImageViewTimeInterval

你可能感兴趣的:(Effective Objective-C 03-04)