Static global variable 是啥

在 Objective-C 中我们这样定义一个 global static variable:

static int myStaticGlobalInt = 0;

注意上面段代码并不放在任何{}之间,否则定义的是一个static local variable.

Static global variable 的作用域

以上面那段代码为列子,在 myStaticGlobalInt 声明的文件中的任何地方都可以访问到它,比如:

  -(void) methodOne {
     myStaticGlobalInt++
  }  

  -(void) methodTwo {
     myStaticGlobalInt++
  }

Static global variable 的生命周期

在 ExampleObject 对象中声明一个 static global variable:

// ExampleObject.m
@interface ExampleObject()
@end
static int myInt = 10;

-(void) increaseMyInt
{
  myInt++;
}
-(void) printMyInt
{
  NSLog(@"myInt is %i", myInt);
}

然后执行:

ExampleObject *obj = [ExampleObject alloc] init];
[obj increaseMyInt];
[obj printMyInt];
ExampleObject *obj2 = [ExampleObject alloc] init];
[obj2 printMyInt]

得到以下结果:

"myInt is 11"
"myInt is 11"

static global variable 一旦被创建就会一直存在. 下次访问时会得到最近一次被赋予的值.