为什么在Objective-c类方法中将变量声明为静态?

时间:2011-08-10 20:32:26

标签: objective-c static scope class-method

我不明白为什么变量在Objective-c类方法中声明为static

static变量的范围是什么?

2 个答案:

答案 0 :(得分:3)

当堆栈帧从堆栈中弹出时,

static变量不会被破坏(正常变量会这样做,否则你会得到史诗般的内存泄漏)。将它们视为您只能在本地访问的全局变量。他们将保持活着,直到整个程序终止。

示例:

+ (id)sharedInstance {
  static singletonInstance = nil; // for example
  if (singletonInstance == nil) {
    singletonInstance = [[self alloc] init];
  }
  return singletonInstance;
}

答案 1 :(得分:1)

范围在文件级别,就像在C中一样。由于它是静态的,变量将在应用程序的生命周期内保留,并且该类的所有实例都可以访问它。好的例子是引用单例实例,实现全局计数器或某种资源锁定。