1

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

static变量 的范围是什么?

4

2 回答 2

3

static当它们的堆栈帧从堆栈中弹出时,变量不会被破坏(普通变量会,否则你会得到史诗般的内存泄漏)。将它们视为只能在本地访问的全局变量。他们会一直活着,直到整个程序终止。

例子:

+ (id)sharedInstance {
  static singletonInstance = nil; // for example
  if (singletonInstance == nil) {
    singletonInstance = [[self alloc] init];
  }
  return singletonInstance;
}
于 2011-08-10T20:34:00.413 回答
1

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

于 2011-08-10T20:35:30.230 回答