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