Objective-C не имеет статических переменных класса. Однако вы можете создавать статические переменные модуля (как в C). Чтобы иметь приватную статическую переменную:
//MyClass.m
static int MyStatic;
@implementation MyClass
@end
даст MyStatic
область действия уровня модуля. Поскольку это просто C, нет возможности сделать MyStatic видимым, например, из категории на MyClass, не делая его публично видимым через объявление extern
. Поскольку статические переменные фактически являются глобальными переменными, это, вероятно, хорошо: MyClass должен делать абсолютно все возможное, чтобы скрыть существование MyStatic
.
Если вы хотите, чтобы статическая переменная была общедоступной (вы действительно не хотите):
//MyClass.h
extern int MyStatic;
@interface MyClass {}
@end
//MyClass.m
int MyStatic;
@implementation MyClass
@end