Objective-c中枚举类型的变量的默认值



我有一个这样的enum:

typedef enum {
    ThingA,
    ThingB,
    ThingC
} MyType;

我有一个在接口中声明了一个ivar的类,像这样:

@property (nonatomic) MyType myTypeIvar;

目前myTypeIvar的默认值是ThingA(因为ThingA在enum中位于第0位)。什么是最好的方法来使myTypeIvar ThingB的默认值?

一个解决方案是简单地重新排序枚举定义(将ThingB放在第0个位置)。另一个解决方案是在init方法中设置myTypeIvar。然而,init方法不存在(当它被添加时,它永远不会被调用)。

让myTypeIvar ThingB默认值的最好方法是什么?

在指定的初始化器中设置myTypeIvar的值为ThingB,即所有其他初始化器都期望调用的初始化器。例如,如果有问题的类是UIViewController的子类,你会重写-initWithNibName:bundle:,因为那是UIViewController的指定初始化器。

最新更新