iOS关于static全局变量的使用

2018-10-13  本文已影响0人  Daniel梁

#### 总所周知static变量有三个作用

#### 修饰的局部变量(在方法里面的变量)

- 使得局部变量只初始化一次

- 局部变量在程序中只有一份内存,使这个变量拥有记忆功能(可以被赋值).

- 局部变量的作用域不变,但是生命周期变了(直到程序结束才销毁)

#### 修饰的全局变量

- 拥有局部变量修饰时候的属性,不同的是该静态变量只能被本文件访问(作用域在本文件).

局部变量的代码验证可以参考这篇文章https://blog.csdn.net/shenyongjun1209/article/details/78753711

这里我验证一下修饰全局变量的作用域范围

这是一个TestViewController的.m文件

```

#import "TestViewController.h"

static NSString *name;

NSString *age;

@interface TestViewController ()

@end

@implementation TestViewController

@end

在自带ViewController.m文件导入TestViewController.h后通过extern取得文件的name和age

#import "ViewController.h"

#import "TestViewController.h"

extern NSString *name;

extern int age;

@interface ViewController ()

@end

在viewDidLoad方法里面尝试拿到name和age

@implement ViewController()

- (void)viewDidLoad {

    [super viewDidLoad];

    NSLog(@"%@",name);

    NSLog(@"%d",age);

}

@end

```

报错找不到_name这个symbols属性,把 NSLog(@"%@",name);注销掉demo才可以运行

说明static修饰的全局变量只能被本文件使用,而没有被static修饰的age则可以导入该文件头文件后的任意文件使用。

上一篇 下一篇

猜你喜欢

热点阅读