Являются ли статические переменные в методах Objective C общими для всех экземпляров?
Я хочу уточнить, используют ли разные экземпляры класса Objective-C статические переменные, которые происходят внутри методов, или каждый экземпляр получает свою собственную копию:
- (void) myMethod {
static int myVar = 0;
}
Ответ 1
Это то же самое, что и статическая переменная в C; экземпляры будут разделять переменную. Если вы хотите, чтобы каждый экземпляр имел свою собственную копию, вам нужна переменная экземпляра (объявленная в блоке @interface).
Ответ 2
Статические локали разделяются между вызовами методов и экземплярами.
Вы можете думать о них как о глобалях, которые видны только внутри их методов:
- (void) showVars {
int i = 0;
static int j = 0;
i++; j++;
NSLog(@"i = %i ; j = %i", i, j);
}