美文网首页
const/static/extern/const/static

const/static/extern/const/static

作者: 罂粟之城 | 来源:发表于2019-08-07 13:14 被阅读0次
      1. const -- 常量

    const中文意思是“常量”,不可改变的固定的。const关键字主要作用:

        >> const 用来修饰右边的基本变量或者指针变量
        >> const 被修饰的变量只读,不能被修改
        
    int const a = 100;   <<===>> const int a = 100;
    
    在其后在进行变量 “a”赋值  如a = 200;是错误用法。
    

    const 常用用法可以修饰NSString字符串作为不变的key值变量。

        const NSString * key = @"myName";
    

    const 还可以作为某些不可改变的定义的常量数值

        const NSInteger a = 100;
    
      1. static -- 静态变量

    static关键字可以被称为“静态的”,即可修饰某些如NSString,NSInteger等变量,保持此变量只被初始化一次,在内存中一直持有。

    其中static 还可以被使用在如创建初始化VC或者view时,保持此VC或者view始终存在内存中,不被释放,可多处使用;其中static使用还避免了使用单例类作为修饰类的冗余。

    • 2.1. 修饰局部变量

    保证局部变量在此方法中只会被初始化一次,在程序运行中不论执行多少次,只会在内存中产生一份此变量的内存。

    // 测试static方法
        - (void)testMethod1{
    // static 修饰此i变量只会被初始化一次,所以i的值会一直"i++"增加
            static int i = 0;
            i ++ ;
            NSLog(@"%d",i);
        }
    
    • 2.2 修饰全局变量

    使全局变量的作用域仅限于当前文件内部,即当前文件内部才能够访问该全局变量。

    iOS中在一个文件声明的全局变量,工程的其他文件也是能访问的; 但又不想让其他文件访问,这时就可以用static修饰它了,比较典型的是使用GCD一次性函数创建的单例,全局变量基本上都会用static修饰。如下面代码举例:

    
    @implement testClass
    //static修饰全局变量,让外界文件无法访问
    static testClass *_sharedManager = nil;
    
    + (testClass *)sharedManager {   
       static dispatch_once_t oncePredicate;   
       dispatch_once(&oncePredicate, ^{
            _sharedManager = [[self alloc] init];
        });   
       return _sharedManager;
    }
    @end
    
    • 2.3. 修饰函数

    在iOS中static修饰函数比较少见,不过在C/C++中修饰函数是非常常见的。C++中static修饰函数表示静态函数即类似于iOS中的类方法,使用类名直接调用即可。

      1. extern -- 声明外部全局变量

    extern 表示外面的,外部的。其中extern只能用于声明,不能用于实现。

    可以在 "xx.h" 中使用extern声明一些全局的变量
        extern NSString * const name;
        extern NSInteger const count;
    然后在 "xx.m" 文件中去实现
        const NSString *name = @"myName";
        const NSInteger count = 1;
    在需要使用的文件中import“xx.h”就可以使用定义的常量和变量了。
    
    • 4.break: 跳出“本层”循环,结束循环。

    • 5.continue: 忽略“本次”循环后的代码,执行下一次循环。

    • 6.return: 直接结束整个函数,不管这个return处于多少层循环之内。

    相关文章

      网友评论

          本文标题:const/static/extern/const/static

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