2010-08-06 48 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