2010-08-06 3 views
0

Я создаю свой собственный ниб и класс для него. Я подключил все элементы управления к классу в построителе интерфейса. Когда я запускаю его, он работает нормально. Единственная проблема заключается в том, что когда я просматриваю табличное представление, он падает. Есть идеи, что может быть ошибкой? Я пытался исправить это какое-то время безрезультатно. Это дает EXC_BAD_ACCESS, который я не уверен, как отлаживать.Iphone SDK - проблемы с пользовательским UITableViewCell Nib

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

+0

Вы можете отлаживать аварии, как это с помощью зомби инструмента в инструментах. –

+0

сбор мусора? – taskinoor

ответ

0

Если вы когда-нибудь понадобится снова, вот полезный способ отладить ошибку EXC_BAD_ACCESS, установив символическую точку останова. Если побежал в режиме отладки, отладчик будет перерыв в точке EXC_BAD_ACCESS дает вам возможность взглянуть на трассировки стека и выяснить, что вызвало проблемы:

  • Открыть окно отладки
  • Открыть окно точек останова (Показать Breakpoints) в правом верхнем углу
  • Дважды щелкните строку, которая считывает «Двойной щелчок для символа»
  • типа в objc_exception_throw и нажмите возвращение

Вы можете оставить это в своем проекте навсегда, так как оно всегда будет полезно при каждом запуске ошибки EXC_BAD_ACCESS.

Надеется, что это помогает

+0

'EXC_BAD_ACCESS' - это не исключение Objective-C, это * kernel * exception-i.e, процесс рухнул прямо. Вы можете получить это в любой программе, независимо от того, использует ли она время выполнения Obj-C; простая программа C может вызвать такой крах. Это все равно отключит отладчик; нет необходимости устанавливать точку останова. Более того, отладчик не очень полезен для отладки 'EXC_BAD_ACCESS' в приложениях Objective-C, где обычно указывает сообщение, отправленное мертвому объекту. В этих случаях инструмент Зомби гораздо полезнее для поиска причины ошибочной смерти объекта. –