2017.6.8 学习日记-第4条:多用类型常量,少用#define预处理指令

《Effective Objective-C 2.0 编写高质量iOS与OS X的52个有效方法》读书总结

第一章 熟悉的Objective-C

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


编写代码时经常要定义常量。

预处理指令 #define

#define ANIMATION_DURATION 0.3

这样定义出来的常量没有类型信息。

特点:“持续”(duration)

预处理过程会把遇到的所有ANIMATION_DURATION一律替换为0.3,若此指令出现在某个头文件中,那所有引入这个头文件的代码,都会被替换。

类型常量 static const

static const NSTimeInterval KAnimationDuration = 0.3;

用此方法定义的常量包含类型信息,清楚地描述了常量的含义。

常量命名:

若常量局限于某“编译单元”即“实现文件”(implementation file)之内,则在前面加字幕k;

若常量在类之外可见,则以类名为前缀,避免名称冲突。

常量位置:

尽量不重要在头文件声明预处理指令,避免常量名称出现冲突;

static 修饰符表示该变量仅在定义次变量的编译单元可见。若声明时不加static,编译器会创建一个外部符号(external symbol),若另一个编译单元声明同名,会报错。

声明外界可见,在头文件中使用extern声明全局变量,在相关实现文件中定义其值

// In the header file

extern NSString *const EOCStringConstant;

// In the implementation file

NSString *const EOCStringConstant = @"VALUE";

你可能感兴趣的:(2017.6.8 学习日记-第4条:多用类型常量,少用#define预处理指令)