美文网首页
iOS中static、const、extern

iOS中static、const、extern

作者: 山有木枝壮 | 来源:发表于2019-10-16 11:27 被阅读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文件中实现

相关文章

网友评论

      本文标题:iOS中static、const、extern

      本文链接:https://www.haomeiwen.com/subject/jemymctx.html