2011-10-27 52 views
1

我有我的定製CustomTableViewCell : UITableViewCell@property(nonatomic, retain) Model* model;。還有一個視圖的xib文件(具有正確配置的類和重用標識符的單元)。在我的自定義單元格類,有一個- init實現:從筆尖加載定製單元問題

- (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是零。小區正在工作,但沒有model。我不知道爲什麼。有任何想法嗎?我想,我的- init不是猶太...

編輯

我發現,這個模型是沒有零後返回,但被稱爲表視圖數據源的方法時。此外,表格視圖指的是0x0在那段時間令我感到驚奇。完全怪異!感謝您的努力,我將用代碼完成我的單元格...

+1

當你說你可以訪問self.model沒有任何問題,你是什麼意思?你可以在日誌或調試器中看到一個有效的對象,或者你沒有從init方法得到任何運行時錯誤? – jrturton

+0

讓你的單元格擁有一個「模型」似乎是一種不尋常的模式 - 顯然,我不知道它在應用程序的上下文中是什麼,但是如果它指向單元格中顯示的數據,那麼這不是正常的做事方式,由於細胞再利用。您的單元格通常會在表視圖數據源cellforrowatindexpath方法期間從定製的xib中加載,以及在該點傳遞給它的任何數據。 – jrturton

回答

2

您是否在實現中合成了模型?

@synthesize model; 
+0

是的。我也'釋放'在' - dealloc'中。 – user500

2

你不應該在init方法中爲你的ivars使用點屬性語法。基本上,因爲整個對象可能還沒有完全建立起來。試試這個:

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

也應該檢查,看看是否自己是不是臨睡前做別的你高德

好運爲零。

2
  1. 您需要檢查[Model alloc] init]的結果,確保值不爲零。
  2. 檢查你的財產model的細胞,確保它沒有分配。
  3. 如果仍然modelcell爲零,請在此處張貼更多的代碼。