2010年8月30日月曜日

サンプルプログラムでNSRangeExceptionが発生

以下のソースコードが書籍に書かれており、その通りに実装してアプリケーションを実行させたところ、「NSRangeException」が発生してしまいました。

if (cell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell"
        owner:self options:nil];
    cell = [nib objectAtIndex:1]  ・・・a
}

デバッグをしたところ、(a)地点で例外がスローされていることが分かりました。そこでその部分について以下のような説明が書籍にありました。(著作権的に問題がありそうなので、文章はサマリーします。)

「再生利用可能なセルがなければ、nibからファイルを読み込む。objectAtIndexの呼び出しでは、Index:0の代わりにindex:1を使う。オブジェクト0はファイルのオーナーで、テーブルビューセルはindex:1に存在する。」

この文章を信じきった私は、objectAtIndexの引数が1であることが正しいと思い込んでしまい、このエラーを取り去るのに相当な時間を要しました。結果としては(a)のobjectAtIndexの引数を0にすることで正常に動作しました。なぜ、0で動作したかはこれから調べますが、書籍のサンプルコードが引数1で正しいとしている点も気になります。単なる間違いなら良いのですが。高いお金を出して書籍を購入している身としては、正しい情報を載せてほしいと願うばかりです。

0 件のコメント:

コメントを投稿