我不明白为什么static
在 Objective-c 类方法中声明变量?
static
变量 的范围是什么?
static
当它们的堆栈帧从堆栈中弹出时,变量不会被破坏(普通变量会,否则你会得到史诗般的内存泄漏)。将它们视为只能在本地访问的全局变量。他们会一直活着,直到整个程序终止。
例子:
+ (id)sharedInstance {
static singletonInstance = nil; // for example
if (singletonInstance == nil) {
singletonInstance = [[self alloc] init];
}
return singletonInstance;
}
范围在文件级别,就像在 C 中一样。由于它是静态的,因此该变量将在应用程序的生命周期内保持不变,并且该类的所有实例都可以访问它。很好的例子是引用一个单例实例,实现一个全局计数器,或者某种资源锁。