const 与宏 #define 的区别:
1. 编译时刻: 宏#define是预编译 (之前处理), const是编译阶段 (之后处理) 2. 编译检查: 宏#define不做检查, 有错误不会提示, const会检查, 有错误会提示 3. 宏的坏处: 大量使用宏#define, 容易造成编译时间过长. //宏 #define NavBar_Hight 64 //const static CGFloat const NavBar_Hight 64; static 与 const 结合使用 1.如果变量用 static 与 const 一起声明了 eg: static CGFloat const NavBar_Hight 64; 那么试图去修改它, 编译器就会报错. 2. 苹果官方推荐使用const常量, 不推荐使用宏#define // 字符串常量 static NSString *const name = @"zwz"; extern 与 const结合使用 在开发中需要多个文件中经常使用同一个字符串, 可以使用 extern 与 const结合使用 1. static与const : 在每个文件都需要定义一份静态全局变量 2. extern与const : 定义一份全局变量, 多个文件可以共同访问 有时候需要对外公开某个常量。比方说,你可能要在类代码中调用NSNotificationCenter以通知他人。用一个对象来派发通知,令其它欲接收通知的对象向该对象注册,这样就能实现此功能。 .h文件 extern NSString *const Demo; .m文件 NSString *const Demo = @"www.baidu.com"; 这样定义常量要优于使用#define预处理指令,因为编译器会确保常量值不变。一旦 .m 文件中定义好了,即可随处使用,而采用预处理指令定义常量可能会无意中修改,从而导致应用程序各个部分使用的值互不相同。