2011-09-23 4 views
0

У меня есть проект, где я хочу открыть UITableViewController после UITableViewController через UINavigationController. Дело в том, что работает в первый раз, когда он вызывается с помощью этой функции:Ошибка при сбое UITableViewController при загрузке

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    SDMetadataEntity *entity = [self.optionItems objectAtIndex:indexPath.row]; 
    SudzcDetailViewController *detailViewController = [[SudzcDetailViewController alloc] init]; 
    detailViewController.refName = entity.Name; 
    [self.navigationController pushViewController:detailViewController animated:YES]; 
    [detailViewController release]; 
    [entity release]; 
} 

Но когда я нажимаю кнопку назад на панели навигации, и снова нажмите ту же позицию, он выходит из строя! Он не падает, когда я нажимаю другой элемент в первом UITableViewController. Я бы очень хотел узнать, что я делаю неправильно!

+0

Можете ли вы разместить журнал аварий? Это может быть полезно –

ответ

1

Вы не должны

[entity release]; 

, потому что когда вы делаете

[self.optionItems objectAtIndex:indexPath.row]; 

вы просто забирающий указатель на него, не инициализировать/копировать/сохраняя его.

+0

Удивительный, спасибо за это знание! – Wesley

1

Вы не должны выпускать entity.

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

+0

Спасибо, работает как шарм! – Wesley

Смежные вопросы