0

クラスの指定された初期化子を実装し、他の初期化子にこれを呼び出させる必要があることを教える本を読んでいます(これには同意します)。

今、私はこの本のセクションにいます:「UITableViewController の指定されたイニシャライザは initWithStyle:」です。そして、次のように実装します。

// inside ItemsViewController.m, subclass of UITableViewController

-(id) init{
    // Call the superclass's designated initializer
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {

    }
    return self;
}

- (id)initWithStyle:(UITableViewStyle)style
{
    return [self init];
}

このコードの後に​​、本は次のようにも述べています。

投稿の冒頭で説明した原則に固執するために、このクラスを次のように実装した可能性があります。

// inside ItemsViewController.m, subclass of UITableViewController


// Implement the designated initializer first
-(id) initWithStyle:(UITableViewStyle)style
    // Call the superclass's designated initializer
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {

    }
    return self;
}

// Call designated initializer
- (id)init
{
    return [self initWithStyle: nil];
}

しかし、私は何かが欠けていると思いますか?私は本initが彼らの場合に指定されたイニシャライザとして使用していると思いますか?

4

3 に答える 3

0

基本的に、あなたのコードと本のコードは同じことをします。クラスにはさまざまなタイプの初期化子があり、必要なものを使用します。この本の例で示したいのは、後でカスタム初期化子が必要になった場合にそれらを上書きする方法です。実際のライブアプリケーションの観点からは意味をなさないことは理解できますが、初期化子の上書きとカスタマイズの学習からは、問題ないと思います。

于 2013-07-29T09:20:01.857 に答える