プロジェクト
私は、ルート テーブル ビューと詳細テーブル ビューを備えたナビゲーション コントローラー ベースの比較的単純な iPhone OS プロジェクトに取り組んでいます。メイン リストのアイテムをタップすると、プッシュされたテーブル ビューでその詳細が表示されます。
セットアップ
ビュー コントローラーの目的が曖昧にならないように、両方のビューのデータ ソースを独自のオブジェクトに分割しました。これを行うと、これらのメソッドは別のファイルにあるため、テーブル ビューにはデータ ソースがなくなりました。そのため、適切な XIB ファイルに各データ ソース クラスのインスタンスを作成し、オブジェクト アイテムを使用しました (ドラッグして、そのクラスを設定します)。 . 次に、実際にテーブルビューをデータ ソースに接続するために、Interface Builder で各テーブルビューの dataSource アウトレットを黄色のデータ ソース オブジェクトに設定します。テーブル ビュー デリゲートは引き続きビュー コントローラーに設定されます。
問題
ルート テーブル ビューは問題なく動作しますが、行をタップして詳細ビューにプッシュすると、データ ソース オブジェクトが期待どおりにインスタンス化され、すぐに解放され、クラッシュが発生します (解放されたオブジェクトで numberOfSectionsInTableView: が呼び出されます)。Interface Builder でのデータ ソース オブジェクトの作成とテーブルビュー接続で示されているように、詳細ビューですぐに必要なときにデータ ソースが自動的に割り当て解除される理由がわかりません。さらに困惑しているのは、まさにこのアプローチがルート テーブルビューに対してうまく機能することです!
質問
これが発生する原因となる、私が見逃している明らかなものはありますか?それとも、これはテーブル ビュー コントローラーのデータ ソースをインスタンス化する正しい方法ですか? ビューのみに関係するビューコントローラー内からそれを行うのは、オブジェクト指向プログラミングが貧弱であるように思われます。すべてを 2 つのテーブル ビュー コントローラー クラスに詰め込むことができ、おそらくうまくいくでしょう。
ありがとう!