• iOS定义静态变量、静态常量、全局变量


    静态变量

    当我们希望一个变量的作用域不仅仅是作用域某个类的某个对象,而是作用域整个类的时候,这时候就可以使用静态变量。

    static
    static修饰的变量,是一个私有的全局变量。
    C或者Javastatic关键字修饰的变量,可以使用类名直接拿到这个变量对象,在其他类中可以进行修改。但是在OCstatic修饰的变量是不能通过类名直接访问的,它只作用于它声明所在的.m文件中。
    static修饰的变量必须放在@implementation外面或方法中,它只在程序启动初始化一次。

    static int num;

    静态常量

    const
    const修饰的变量是不可变的,如果需要定义一个时间间隔的静态常量,就可以使用const修饰。

    static const NSTimeInterval LMJTimeDuration = 0.5;

    如果试图修改TimeDuration编译器则会报错。

    如果我们定义一个字符串类型的静态常量就要注意了,这两种写法是一样的,而且是可以修改的

    static NSString const * LMJName = @"iOS开发者公会";
    static const NSString * LMJName = @"iOS开发者公会";

    这两种写法cons修饰的是* LMJName,*是指针指向符,也就是说此时指向内存地址是不可变的,而内存保存的内容时可变的。
    所以我们应该这样写:

    static NSString * const LMJName = @"iOS开发者公会";

    当我们定义一个对象类型常量的时候,要将const修饰符放到*指针指向符后面。

    全局变量

    extern
    extern修饰的变量,是一个全局变量。

    extern NSString * LMJName = @"iOS开发者公会;

    extern修饰的变量也可以添加const进行修饰:

    extern NSString * const LMJName = @"iOS开发者公会;

    此时全局变量只能被初始化一次
    extern定义的全局常量的用法和宏定义类似,但是还是有本质上的不同的。 extern定义的全局常量更不容易在程序中被无意窜改。

    版权声明:出自MajorLMJ技术博客的原创作品 ,转载时必须注明出处及相应链接!

  • 相关阅读:
    [排错] VO对象和POJO对象的关系
    celery(异步处理)+redis
    django开发经验(每日生鲜)
    开发流程
    linux 使用问题
    磁盘的操作
    文件系统的简单操作
    LINUX磁盘与档案系统
    文件操作
    Linux文档修改
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7084390.html
Copyright © 2020-2023  润新知