Objective-C не имеет переменных класса. Вы объявляете глобальную переменную C. Вот как я это делаю:
Объявление статической переменной C. В вашем случае:
static BOOL isChecked = NO;
Обратите внимание, что я его инициализировал. Обратите внимание, что он объявлен статическим, что ограничивает его видимость для файла .m, в котором он объявлен.
Если вам нужен глобальный объект, такой как массив, вам нужно его инициализировать:
static NSArray *myArray;
@implementation MyClass
+ (void)initialize {
if (self == [MyClass class]) {
myArray = [NSArray arrayWithObjects: ... ];
}
}
@end
Обратите внимание на if (self == [MyClass class]) check. + initialize будет вызываться один или несколько раз. Один раз, когда MyClass используется впервые (например, вызов + alloc ). Возможно, снова, когда любой подкласс MyClass используется впервые. Отсюда проверка, чтобы увидеть, действительно ли вы инициализируете MyClass или его подкласс.
И, наконец, если вы хотите получить доступ к этой переменной за пределами кода, в котором она объявлена, создайте метод доступа:
+ (BOOL)isChecked {
return isChecked;
}
Не открывайте глобальную переменную C, удаляя модификатор static . Это усложняет отладку, рефакторинг или повторную реализацию (что, если isChecked внезапно зависит от другого состояния, как вы можете изменить это, если оно непосредственно используется повсеместно в другом коде?)