主要介绍const,static,extern关键字的使用
1.const与宏的区别
1.1 宏在预编译时处理,const会在编译时被处理
1.2 宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误
1.3 宏的好处:宏能定义一些函数,方法。 const不能;使用大量宏,容易造成编译时间久,每次都需要重新替换
2.const的作用
2.1 const仅仅用来修饰右边的变量
2.2 被const修饰的变量是只读的
2.3 const简单使用
NSString *const MC_MYCOUPON_STORAGE = @"CouponStorage";
- (void)viewDidLoad {
[super viewDidLoad];
//这里修改会报错,MC_MYCOUPON_STORAGE不能被修改
MC_MYCOUPON_STORAGE = @"test";
}
3.static的作用
3.1 延长局部变量的生命周期,程序结束才会销毁
3.2 局部变量只会生成一份内存,只会初始化一次
3.3 改变局部变量的作用域
3.4 只能在本文件中访问,修改全局变量的作用域,生命周期不会改
3.5 避免重复定义全局变量
4.extern的作用
4.1 只是用来获取全局变量(包括全局静态变量)的值,不能用于定义变量
4.2 先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找
// 全局变量:只有一份内存,所有文件共享,与extern联合使用。
int a = 20;
// static修饰全局变量
static int age = 20;
- (void)test
{
// static修饰局部变量
static int age = 0;
age++;
NSLog(@"%d",age);
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self test];
[self test];
extern int age;
NSLog(@"%d",age);
}
5.static与const联合使用
5.1 static与const作用:声明一个只读的静态变量
5.2 开发使用场景:在一个文件中经常使用的字符串常量,可以使用static与const组合
6.extern与const联合使用
5.1 多个文件中经常使用的同一个字符串常量,可以使用extern与const组合
5.2 extern与const组合:只需要定义一份全局变量,多个文件共享