2011-10-23 97 views
2

我正在使用帶有標準單元格的表格視圖的iPad應用程序,選擇自定義單元格時,它應該展開並加載自定義的nib文件。這對第一次選擇很好。iOS - 在第二次加載時加載自定義表格單元格錯誤

如果我選擇一個標準的單元格,它會加載筆尖,如果再次選擇它會恢復正常,第二次加載時會拋出EXC_BAD_ACCESS錯誤(我不認爲我會得到xcode錯誤,似乎是最抽象的)。

我的代碼如下而行是當它從隊列中重複使用的單元格,第三行:

if([listCells objectAtIndex:indexPath.row] == @"open") { 
     NSLog(@"Loading open cell at %i", indexPath.row); 
     CustomMessageCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomMessageCell"]; 
     //Loads the nib file and grabs the last object, presumably the table cell, as it is the only object in the file. 
     if(cell==nil) { 
      cell = [[[[NSBundle mainBundle] loadNibNamed:@"CustomMessageCell" owner:self options:nil] lastObject] autorelease]; 
     } 
     UILabel *message = (UILabel *) [cell viewWithTag:1]; 
     UIButton *approve = (UIButton *)[cell viewWithTag:4]; 
     message.text = @"Test"; 
     return cell; 

任何幫助非常感謝,謝謝!

回答

0

你不應該在這一行autorelease細胞:

cell = [[[[NSBundle mainBundle] loadNibNamed:@"CustomMessageCell" 
           owner:self options:nil] lastObject] autorelease]; 

只需創建這樣的:

cell = [[[NSBundle mainBundle] loadNibNamed:@"CustomMessageCell" 
           owner:self options:nil] lastObject]; 
+0

謝謝,但即使刪除,導致問題。我添加了它,假設它是一個內存問題。猜測它不是? –

+0

你不調用alloc或保留,所以你不應該autorelease。 – SK9

1

你編譯和實際設備上運行?有時你會得到更多信息,然後在模擬上運行。

而且其他的事情來檢查:

  • 你應該檢查在IB筆尖文件的標識是否正確設置 到CustomMessageCell。
  • 確保IB中的子視圖標識符設置正確。
  • 請注意,您不應該自動釋放單元格,因爲它已經像lastObject方法返回的那樣自動釋放了。這可能會導致另一個崩潰原因。

嘗試運行您的應用程序(在真實設備上)並使用殭屍進行配置文件,然後使用泄漏分析工具。 (而不是隻是「運行」選擇「配置文件」)。

希望這會有所幫助。

+0

它已經在iPad 2上進行過測試,標識符正確,問題僅出現在第二次單元格單擊時發生,它首次加載正常。 我會看看殭屍配置文件並回報。謝謝! –

相關問題