2011-10-27 5 views
1

私はCustomTableViewCell : UITableViewCell@property(nonatomic, retain) Model* model;というカスタムを持っています。 1つのビュー(適切に設定されたクラスと再利用識別子を持つセル)を持つxibファイルもあります。私のカスタムセルクラスでは、- init実装があります:nib発行からカスタムセルをロード

- (id)init 
{ 
    NSArray* array = [[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell" owner:self options:nil]; 
    CustomTableViewCell* cell = [[array firstObject] retain]; 
    self = cell; 

    self.model = [[Model alloc] init] autorelease]; 
    self.model.someString = @"foo"; 

    // here I can access self.model with no problem 
    return self; 
    // after method return, self.model refers to 0x0 
} 

私の問題はある... - initの復帰後、self.modelがnilです。セルは動作していますが、modelはありません。そして私は理由を知らない。何か案は?私は、私の- initはコーシャではありません...私は見つけた

EDIT

は、モデルが復帰した後に何もnilでないが、テーブルビューのデータソースメソッドが呼び出されたときだと思います。また、テーブルビューは、その時に私を完全に驚かせる0x0を参照します。全く変わった!ありがとう、私はコードで自分のセルを行うつもりです...

+1

self.modelに問題なくアクセスできると言えば、どういう意味ですか?ロギング時やデバッガで有効なオブジェクトが表示されるか、initメソッドからランタイムエラーが発生しないことがわかりますか? – jrturton

+0

あなたのセルに "モデル"を保持させるのは珍しいパターンです - 明らかに私はあなたのアプリケーションのコンテキストで何がわからないのですが、それがセルに表示されたデータを参照するならばこれは細胞の再利用のため、物事を行う通常の方法。あなたのセルは通常、テーブルビューのデータソースcellforrowatindexpathメソッド中にカスタムxibからロードされ、その時点でそれに渡されるすべてのデータがロードされます。 – jrturton

答えて

2

実装でモデルを合成しましたか?

@synthesize model; 
+0

はい。また、 ' - dealloc'で' release 'します。 – user500

2

initメソッドでは、ivarsにドットプロパティの構文を使用しないでください。基本的に、オブジェクト全体がまだ完全にセットアップされていない可能性があるからです。これを試してみてください:

model=[Model alloc] init]; 
[email protected]"foo"; 

も、あなたは自己

あなたアイバーズと幸運を他の何かをやって行く前にnilでないかどうかを確認する必要があります。

2
  1. 結果を[Model alloc] init]から確認する必要があります。値がゼロでないことを確認してください。
  2. セルのプロパティmodelを確認し、割り当てられていないことを確認します。
  3. modelcellの場合は、ここにコードを投稿してください。
関連する問題