const 和宏的区别
- 编译时刻: const 是编辑阶段的 而宏是与便于
- 编译检查 : 宏不做检查不会编译错误只会替换 const 会编译检查会报变异错误度
- 宏能够定义一些函数但是const 不可以
- 大量的使用宏会导致编译时间过长,每次都会重新替换
const 的作用 (限制类型)
- 仅仅用来修饰右边的变量
- 被const 修饰的变量是只读类型的
static
可以 修饰局部变量
- 局部变量只会生成一份,在内存中也只有一份,延长了变量的生命周期
- 改变局部变量的作用域
可以用来修饰全局变量
- 避免重复定义全局变量
- 全局变量只会生成一份在内存中也只有一份,只能在本文件中访问
extern
- 只是用来获取全局变量的值,不用来定义变量extern 的工作原理: 在当前文件中查找有没有全局变量,没有找到才会去其他文件中进行查找
// 全局变量: 只有一份内存
static 和const 联合使用
- static 和const 联合使用声明一个静态的只读的变量
eg1 static NSString const *key1 = @"name";
eg2 static const float kTextSectionHeight = 50;
extern 和const 联合使用
- 开发过程中如何多个文件经常使用一个通用的字符串,可以使用extern 和 const联合使用
原因是:
1 . static 和const 的组合需要在每一份文件里定义一个静态全局变量
2 . extern 与const 的组合 只需要定义一份,多个文件可以共享
需要注意的是全局常量的管理方法:开发中经常会有一个GlobeConst的文件,里面专门定义全局变量,用于同意管理