第二次加载时UITableViewController崩溃

时间:2011-09-23 20:27:29

标签: iphone objective-c ios xcode uinavigationcontroller

我有一个项目,我希望通过UINavigationController在UITableViewController之后打开一个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中按下不同的项时,它不会崩溃。我真的想从我做错了什么来学习!

2 个答案:

答案 0 :(得分:1)

您不应该发布entity

你从一个数组获得了该对象,你没有它,所以当你释放它时,你可能会导致它过早地被解除分配。

答案 1 :(得分:1)

你不应该

[entity release]; 

因为你做的时候

[self.optionItems objectAtIndex:indexPath.row];

你只需要一个指向它的指针,而不是初始化/复制/保留它。