1

私はenumこのようなものを持っています:

typedef enum {
    ThingA,
    ThingB,
    ThingC
} MyType;

次のようなインターフェイスでivarが宣言されたクラスがあります。

@property (nonatomic) MyType myTypeIvar;

現在、myTypeIvarのデフォルト値はThingAです(ThingAは列挙型の0番目の位置にあるため)。 myTypeIvar ThingBのデフォルト値を作成するための最良の方法は何ですか?

1つの解決策は、列挙型定義を単純に並べ替えることです(ThingBを0番目の位置に配置します)。別の解決策は、メソッドにmyTypeIvarを設定するinitことです。ただし、initメソッドは存在しません(追加されたときに呼び出されることはありません)。

4

1 に答える 1

4

myTypeIvar ThingBのデフォルト値を作成するための最良の方法は何ですか?

指定した初期化子、つまり他のすべての初期化子が呼び出すと予想される初期化子で、の値をmyTypeIvarに設定します。ThingBたとえば、問題のクラスがUIViewControllerのサブクラスである場合、それがUIViewController-initWithNibName:bundle:の指定された初期化子であるため、オーバーライドします。

于 2011-10-04T17:49:00.500 に答える