Значения по умолчанию для ivar с типом enum в Objective-c

#objective-c #enums #initialization #default-value #ivar

#objective-c #перечисления #инициализация #значение по умолчанию #ivar

Вопрос:

У меня есть enum такой:

 typedef enum {
    ThingA,
    ThingB,
    ThingC
} MyType;
  

У меня есть класс с ivar, объявленный в интерфейсе следующим образом:

 @property (nonatomic) MyType myTypeIvar;
  

В настоящее время значением по умолчанию для myTypeIvar является ThingA (поскольку ThingA находится на 0-й позиции в перечислении). Каков наилучший способ сделать значение по умолчанию для myTypeIvar ThingB ?

Одним из решений является простое изменение порядка определения enum (поместите thingbв 0-ю позицию). Другим решением является установка myTypeIvar в init методе. Однако метод init не существует (и когда он добавляется, он никогда не вызывается).

Комментарии:

1. Итак, вы планируете использовать это свойство без его правильной инициализации?

Ответ №1:

Каков наилучший способ сделать значение по умолчанию для myTypeIvar ThingB ?

Установите значение myTypeIvar to ThingB в назначенном вами инициализаторе, то есть инициализаторе, который, как ожидается, будут вызывать все другие инициализаторы. Например, если рассматриваемый класс является подклассом UIViewController, вы бы переопределили -initWithNibName:bundle: , потому что это назначенный инициализатор для UIViewController.