多用类型常量,少用#define预处理指令
编写代码时经常要定义常量。例如,要写一个UI视图类,此视图显示出来之后就播放动画,然后消失。你可能想把播放动画的时间提取为常量,通常我们会采取这种方法来做
#define ANIMATION_DURATION 0.3
上述预处理指令会把源代码中的ANIMATION_DURATION替换为0.3.。这可能是你想要的结果,不过这样定义出来的常量没有任何类型信息。此外,预处理过程中会把碰到的所有ANIMATION_DURATION一律替换成0.3,这样的话加入此定义在某个头文件中,南那么所有引入了此头文件的代码,其ANIMATION_DURATION都会被替换。并且这种替换是在预编译的时候替换的,使用宏定义也会大大增加编译时间。
要想解决此问题,我们可以定义一个类型为NSTimerIntrval的常量
static const NSTimeInterval kAnimationDuration = 0.3;
请注意,用此方法定义的常量包含类型信息,其好处是清晰地描述了常量的含义。