Доступ к переменным класса stati c в Objective- C - PullRequest
0 голосов
/ 06 января 2020

Я хотел бы использовать переменные класса вне класса.

Под "снаружи" я подразумеваю основную функцию, в которой я создаю экземпляр класса.

@interface Class: NSObject
static int var_class;   // Class variable
{
    int var_object; // Object variable
}
@end

@implementation Class
@end

Для доступа var_object, переменная объекта, которую мы используем:

int main(void)
{
    Class *object = [Class new];

    // Access to the variable
    object->var_object;
    (*object).var_object;

    return 0;
}

Я думал, что смогу получить доступ к var_class, переменной класса, таким же образом.

Но ни одна из них не сработала. (Невозможно скомпилировать)

Class.var_class;
// -> Generates error: could not find setter/getter for 'count' in class 'TheClass'

Class->var_class;
// -> Generates error: error: expected '.' before '->' token

Как получить / установить значение переменной класса?

Объявление функции - это способ доступа к переменным класса, но я хочу, чтобы это было проще.

@interface Class: NSObject
static int var_class;   // Class variable
+(int) get;
+(void) set: (int) val;
@end

@implementation Class
+(int) get
{
    return var_class;
}
+(int) set: (int) val
{
    var_class = val;
}
@end

1 Ответ

0 голосов
/ 06 января 2020

В Objective- C нет переменных класса stati c, поэтому вы не можете ожидать что-то вроде Class.var_class. Вот почему ваше последнее предложение является правильным и общепринятым. Смотрите, Поддерживает ли Objective- C переменные класса? .

---- EDIT ----

Некоторые новые конструкции были добавлены в Objective- C см. Объектив- C Свойства класса . Таким образом, синтаксис допустим, в то время как нет автоматического синтеза c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...