静态变量
问题描述:
我想澄清是否发生的内部方法,或者如果每个实例都有它自己的拷贝静态变量的Objective-C类份额不同的实例:静态变量
- (void) myMethod {
static int myVar = 0;
}
答
这是相同的作为C中的静态变量;实例将共享该变量。如果您希望每个实例都有自己的副本,则需要一个实例变量(在@interface
块中声明)。
答
静态本地是在方法调用和实例之间共享的。 你可以把它们作为全局只内他们的方法是可见的:
- (void) showVars {
int i = 0;
static int j = 0;
i++; j++;
NSLog(@"i = %i ; j = %i", i, j);
}
[...]
[obj1 showVars];
[obj2 showVars];
[obj1 showVars];
[obj2 showVars];
2种不同的情况下,上面的调用将输出:
i = 1 ; j = 1
i = 1 ; j = 2
i = 1 ; j = 3
i = 1 ; j = 4
你不能说“跟C一样”。 “主观”C在客观意义上没有实例。 – iter 2010-07-07 21:59:20
@iter,它与C中的任何静态变量相同,都是我的意思。如果它是一个静态的全局变量,那么每个编译单元只有一个,如果它是一个静态局部变量,则每个函数(或Objective-C中的方法)都会引用它。 – 2010-07-07 22:12:16