2010-08-06 47 views
0

我創建了自己的筆尖,併爲它創建了類。我在界面構建器中將所有控件連接到類。當我運行它運行良好。唯一的問題是,當我sc着tableview它崩潰。任何想法的錯誤可能是什麼?我一直試圖解決這個問題一段時間無濟於事。它給出了一個EXC_BAD_ACCESS,我不知道如何調試。Iphone SDK - 自定義UITableViewCell筆尖的煩惱

int cellType = [streamDataProvider cellTypeForIndex:indexPath.row]; 

if(cellType == HOP_GRAFITTI){ 
    static NSString *CellIdentifier = @"HopGrafittiStreamCell"; 
    HopGrafittiStreamCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"HopGrafittiStreamCell" owner:self options:nil]; 
     cell = (HopGrafittiStreamCell *)[nib objectAtIndex:0]; 
     [cell retain]; 
    } 

    [cell.username setText: [streamDataProvider userNameForIndex:indexPath.row]]; 
    [cell.venuename setText: [streamDataProvider venueNameForIndex:indexPath.row]];   
    [cell.grafittiText setText: [streamDataProvider grafittiForIndex:indexPath.row]];     
    return cell; 
} 
+0

沒關係 - 事實證明streamDataProvider有不是保留和被垃圾收集內部對象 – Fountainhop 2010-08-06 06:54:02

+0

您可以用殭屍儀器儀表中調試這樣的崩潰。 – 2010-08-06 07:45:35

+0

垃圾收集? – taskinoor 2010-08-06 10:51:30

回答

0

如果您再次需要它,可以通過設置符號斷點來調試EXC_BAD_ACCESS錯誤。如果在調試模式下運行,調試器會在EXC_BAD_ACCESS點突破讓您有機會來看看堆棧跟蹤和工作是什麼原因引起的問題:

  • 打開調試窗口
  • 打開斷點窗口右上角(顯示斷點
  • 雙擊讀取行「雙擊符號
  • objc_exception_throw然後按回車鍵

您可以將其永久保留在您的項目中,因爲每次遇到EXC_BAD_ACCESS錯誤時它總是有幫助的。

希望這有助於

+0

'EXC_BAD_ACCESS'不是一個Objective-C異常,它是一個*內核*異常 - 即該進程崩潰了。你可以在任何程序中得到它,無論它是否使用Obj-C運行時;一個普通的C程序會產生這樣的崩潰。無論如何,這將使調試器跳閘;沒有必要設置一個斷點。而且,調試器對於在Objective-C應用程序中調試'EXC_BAD_ACCESS'並不是很有幫助,它通常指示發送給死對象的消息。在這些情況下,殭屍工具對追查物體錯誤死亡的原因更爲有用。 – 2010-08-07 05:29:36