Определение enum ivar в какао - PullRequest
1 голос
/ 23 марта 2012

Предположим, у меня есть класс с именем TrafficLight, и я хотел бы иметь свойство currentColor. Я знаю, что можно создать перечисление для представления текущего цвета из фиксированного пула вариантов, например:

enum currentColor { CurrentlyRed = 0, CurrentlyYellow = 1, CurrentlyGreen = 2 };

Но как мне теперь превратить это в ивара в классе Какао? Если я сделаю это свойство, какие атрибуты свойства обычно используются? Находится ли определение enum внутри области реализации? Это идет внутри какого-либо конкретного метода? (например, init?)

1 Ответ

5 голосов
/ 23 марта 2012

Вы не можете пересылать объявления перечислений, поэтому определение должно быть в файле интерфейса класса, а свойство объявлено как (nonatomic, assign) с типом вашего перечисления:

typedef enum { 
    CurrentlyRed = 0, 
    CurrentlyYellow = 1, 
    CurrentlyGreen = 2 
} PossibleColours;

@interface ...

@property (nonatomic, assign) PossibleColours currentColour;

Таким образом, класс и потребители класса имеют доступ к определению.

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