static的作用
-
修饰局部变量
- 让局部变量只初始化一次
- 局部变量在程序中只有一份内存
- 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁)
-
修饰全局变量
- 全局变量的作用域仅限与当前文件
extern
- 要引用全局变量的时候使用, 但如果 在一全局变量个变量前面加上了static,那么他就不能使用了
如:
extern NSString *const kAPIKeyForStatisticsUsageMonthTimeLine;
const
const 来修饰一些数据:如果被他修饰的数据,这个数据就只能相当于常量,在其他地方引用的这个数据是不能被改变的,如果被改变,就会编译器就会立即报错
例如如果你去面试ios,就可能会面试到:下面个有啥不同
const int *p1
int const * p2
int *const p3
const int *p1 :因为const 修饰的 *p1, 所以 *p1 是不能被改变,但p1 能被改变
int const * p2 : 跟第一句是一样的 因为const 修饰的 *p2, 所以 *p2 是不能被改变,但p2 能被改变
int const p3 :因为const 修饰的 p3, 所以 p3 是不能被改变,但p3 能被改变
所以在项目中我们经常可以看见一些常量的文件如下:api 文件
在左边是两个文件,第一个文件是.h 文件是引用到哪些全局变量,这样只要把这个.h 文件导入到你要用的文件,这些全局变量,你都能使用了,
在第二个文件是.m 文件 定义哪些全局变量