iOS中static、const、extern
2019-10-16 本文已影响0人
山有木枝壮
开发中阅读他人代码,经常看到const、static和extern关键字,记录下
1、const
用来定义常量,宏定义也可以定义常量,但是const可以在编译阶段检查错误,因此会增加编译时间。如下定一个常量字符串,该字符串不能被修改
NSString * const aString = @"test";
使用const修饰的全局常量可以在所有文件中访问,如果限定常量只能在当前文件中访问,可以加上static关键字
static NSString * const aString = @"test";
const修饰的位置不同,代表的含义不同,但是修饰的右边总是不能被修改
- 1.const NSString *aString = @"test";
"*HSCoder"不能被修改, "HSCoder"能被修改
- 2.NSString const *aString = @"test";
"*HSCoder"不能被修改, "HSCoder"能被修改
- 3.NSString * const aString = @"test";
"HSCoder"不能被修改,"*HSCoder"能被修改
注意:1和2其实没什么区别,一般我们使用第3中定义方式,不想真正的常量被修改
2、static
- static关键字用来表示静态,如果修饰局部变量,变量只会被初始化一次,即使在for循环中每次赋值,也只会被初始化一次。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//声明一个局部变量i
static int i = 0; //每次点击view来到这个方法时让i自增
i ++; //打印结果
NSLog(@"i=%d",i);
}
- 修饰全局变量,表示全局变量只能在文件内部访问,文件外部不能使用
- 修饰函数用的较少,表示函数只能在类内部访问
3、extern
与static相反,extern用来修饰外部全局变量,但是只能用来定义,真正的变量值需要在.m文件中实现