美文网首页
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