iphone - UITableViewController 第二次加载时崩溃

标签 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 中按下不同的项目时,它不会崩溃。我真的很想从我做错的事情中吸取教训!

最佳答案

你不应该

[entity release]; 

因为当你这样做的时候

[self.optionItems objectAtIndex:indexPath.row];

您只是获取指向它的指针,而不是初始化/复制/保留它。

关于iphone - UITableViewController 第二次加载时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7534451/

相关文章:

ios - 在 iOS 中访问文本文件内容和字符数非常慢

objective-c - 核心显卡 - 创建 RGB 色彩空间的正确方法是什么?

ios - UILabel 在 3.5 英寸 iPhone 4 屏幕上被截断?

ios - NSMutableArray 额外的零哨兵

ios - 从 Swift 函数中的异步调用返回数据

ios - UIWebView 中的内存泄漏

html - 当 SMS 应用程序未在后台运行时,无法在 iPhone 上的 SMS 链接中预填充电话号码和消息正文

ios - 如何减少UIImageView上图像显示的大小

ios - 在 Tableview Cell 上的长按手势上禁用 didSelectRowAtIndexPath

iphone - 未收到推送通知