Objective-C方法中的静态variables

我想澄清Objective-C类的不同实例是否共享方法内部发生的静态variables,或者是否每个实例都有自己的副本:

- (void) myMethod { static int myVar = 0; } 

它和C中的静态variables是一样的。 实例将共享variables。 如果您希望每个实例都有自己的副本,则需要一个实例variables(在@interface块中声明)。

方法调用和实例之间共享静态本地。 你可以把它们想象成只在其方法中可见的全局variables:

 - (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]; 

以上两个不同的实例调用将会输出:

 i = 1 ; j = 1 i = 1 ; j = 2 i = 1 ; j = 3 i = 1 ; j = 4