static关键字的作用

1.函数体内static变量的作用范围为该函数体,不同于auto变量,改变量的内存只被分配一次,因此其值在在此调用时维持上次的值

2.在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其他函数访问

3.在模块内的static函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内

4.在类中static成员变量属于整个类所拥有,对类的所有对象只有拷贝

5.在类中的static成员函数属于整个类所拥有,这个函数不接受this指针,因而只能访问类的static成员变量

举个例子:

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

[self a];

[self a];

}

-(void)a

{

static int a = 10;

for (int i = 0 ; i<10; i++) {

a++;

NSLog(@"%d",a);

}

NSLog(@"等于:%d",a);

}

输出结果为:

2016-03-04 23:20:41.679 static练习[4242:2555220] 11

2016-03-04 23:20:41.680 static练习[4242:2555220] 12

2016-03-04 23:20:41.680 static练习[4242:2555220] 13

2016-03-04 23:20:41.680 static练习[4242:2555220] 等于:13

2016-03-04 23:20:41.680 static练习[4242:2555220] 14

2016-03-04 23:20:41.680 static练习[4242:2555220] 15

2016-03-04 23:20:41.680 static练习[4242:2555220] 16

2016-03-04 23:20:41.680 static练习[4242:2555220] 等于:16

他会维持它上次被赋值的值,不会被重新的init

你可能感兴趣的:(static关键字的作用)