我想澄清是否發生的內部方法,或者如果每個實例都有它自己的拷貝靜態變量的Objective-C類份額不同的實例:靜態變量
- (void) myMethod {
static int myVar = 0;
}
我想澄清是否發生的內部方法,或者如果每個實例都有它自己的拷貝靜態變量的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