78
83

More than 5 years have passed since last update.

初期化メソッド「initWith~」の使い分け

Posted at

StoryBoardを使わず、コードで書かれていたプロジェクトを移行するときには注意が必要です。

initWithCorder: initWithNibName:bundle: initWithStyle:reuseIdentifier:
StoryBoardから生成するとき コードからUIViewControllerを生成するとき コードからUITableViewCellなどのUIViewを生成するとき

「initWithCorder:」… StoryBoardからインスタンスを生成するときに呼ばれる初期化メソッド

aboutInitialize.m
- (id)initWithCoder:(NSCoder*)decoder
{
    self = [super initWithCoder:decoder];
    if (!self) {
        return nil;
    }
    // write something.

    return self;
}

「initWithNibName:bundle:」… UIViewControllerをコードから生成するときに呼ばれる初期化メソッド

aboutInitialize.m
- (id)initWithNibName:(NSString*)nibName bundle:(NSBundle*)bundle
{
    self = [super initWithNibName:nibName bundle:nil];
    if (!self) {
        return nil;
    }
    // write something.

    return self;
}

「initWithStyle:reuseIdentifier:」… UITableViewCellなど、UIViewのクラスをコードから生成するときに呼ばれる初期化メソッド

aboutInitialize.m
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // write something.
    }
    return self;
}

※ 間違っているところがあれば教えてください!

78
83
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
83