日々精進

新しく学んだことを書き留めていきます

initの中でselfのnilチェックをする理由

init系メソッドの中では以下のようにnilチェックをするコードを書くことが多い。

- (id)init{
    self = [super initWithNibName:nil bundle:nil];
    if (self) {
        // 初期化
    }
    return self;
}

なんでselfのnilチェックが必要なのかよくわかっていなかったので調べた。
ビルトインクラスの中には、正しく初期化できなかった時にinitメソッドnilを返す仕様のものがあるらしい。
そういうクラスがあっても、例外を吐いて落ちないようにするためにnilチェックをするらしい。
であれば、initを呼び出す側のコードでもnilチェックをして、nilの場合はエラー処理するようにしないといけないと思われる。(ごめんなさいやってませんでした)
参考:In Objective-C why should I check if self = [super init] is not nil? - Stack Overflow