我想澄清一下Objective-C类的不同实例是否共享在方法内发生的静态变量,或者每个实例是否都有自己的副本:
- (void) myMethod {
static int myVar = 0;
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*ike 84
静态本地在方法调用AND实例之间共享.您可以将它们视为仅在其方法中可见的全局变量:
- (void) showVars {
int i = 0;
static int j = 0;
i++; j++;
NSLog(@"i = %i ; j = %i", i, j);
}
Run Code Online (Sandbox Code Playgroud)
[...]
[obj1 showVars];
[obj2 showVars];
[obj1 showVars];
[obj2 showVars];
Run Code Online (Sandbox Code Playgroud)
以上调用将输出2个不同的实例:
i = 1 ; j = 1
i = 1 ; j = 2
i = 1 ; j = 3
i = 1 ; j = 4
Run Code Online (Sandbox Code Playgroud)
Car*_*rum 30
它与C中的静态变量相同; 实例将共享变量.如果希望每个实例都有自己的副本,则需要一个实例变量(在@interface块中声明).