# IOS 对 static extern const #define 的理解

来源:互联网 发布:知乎 汽车金融风控 编辑:程序博客网 时间:2024/06/05 08:47

IOS 对 static extern const #define 的理解

  1. const 与宏 #define 的区别:

    1. 编译时刻:#define是预编译 (之前处理), const是编译阶段 (之后处理)2. 编译检查:#define不做检查, 有错误不会提示, const会检查, 有错误会提示3. 宏的坏处: 大量使用宏#define, 容易造成编译时间过长.//宏#define NavBar_Hight 64//conststatic CGFloat const NavBar_Hight 64;
    1. static 与 const 结合使用
    1.如果变量用 static 与 const 一起声明了 eg: static CGFloat const NavBar_Hight 64; 那么试图去修改它, 编译器就会报错.2. 苹果官方推荐使用const常量, 不推荐使用宏#define// 字符串常量static NSString *const name = @"zwz";
    1. 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 文件中定义好了,即可随处使用,而采用预处理指令定义常量可能会无意中修改,从而导致应用程序各个部分使用的值互不相同。 
0 0