美文网首页iOSiOS开发ios基础知识
iOS const,static,extern关键字的使用

iOS const,static,extern关键字的使用

作者: 赵琛 | 来源:发表于2016-07-20 14:05 被阅读255次

    主要介绍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组合:只需要定义一份全局变量,多个文件共享

    相关文章

      网友评论

        本文标题:iOS const,static,extern关键字的使用

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