1

私のクラスには、ジェネリック初期化子があります。

- (id)initWithSettings:(MySettings *)settings
{
    self = [super init];
    if (self)
    {
     /// ...
    }
    return self;
}

そして、固定設定の別のイニシャライザがあります

- (id)initWithSettingsForCaseA
{
    return [self initWithSettings:[MySettings genericSettings]];
}

私はこれを行うことができますか?

4

1 に答える 1

2

もちろんできます!

これは実際には良い習慣です。

initWithSettings: 「指定イニシャライザ」と呼ばれます。指定された初期化子をプログラムで定義する方法はありません。これは、より設計パターン/ベスト プラクティスです。

たとえば、UIViewController の指定された初期化子である initWithNibName:bundle:.. を例にとると、普通の init を呼び出すことができ、nib がビュー コントローラーのサブクラスと同じ名前である限り、すべてが正常に機能します。UIViewController は単に指定されたイニシャライザを呼び出し、両方のパラメータに nil を渡します。

あなたは本質的に同じことをしています!

于 2013-02-07T03:47:30.100 に答える