问题描述
我找不到问题!对此的任何帮助将不胜感激:
我正在从UITableView推送一个新视图,该视图包含一个带有UIwebView的视图以访问Internet。单击“后退”按钮时,我得到下一个错误:malloc:*对象0x3d438的错误:未分配要释放的指针。
但是,当我评论最后一行(发布dvController时)时,一切正常!
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self setCellIdxPathSelected:indexPath];
Nsstring *selectedID = [[theList objectAtIndex:indexPath.row] theWebID];
ExternalWebView *dvController = [[ExternalWebView alloc] initWithNibName:@\"ExternalWebView\" bundle:nil];
dvController.hidesBottomBarWhenPushed= YES;
dvController.theWebID= selectedID;
NSLog(@\"El ID: %@\",selectedID);
[self.navigationController pushViewController:dvController animated:YES];
[dvController release]; // ERROR !!!
}
解决方法
尝试用
autorelease
创建dvController
:
ExternalWebView *dvController = [[[ExternalWebView alloc]
initWithNibName:@\"ExternalWebView\" bundle:nil] autorelease];
然后删除“ 4”语句。
如果您使用“泄漏”工具运行仪器并确认您实际上并未泄漏dvController,则将确认您没有泄漏。
我的直觉是您的控制器被另一个对象释放,而该对象已以某种方式成为其子视图。在另一种情况下,我之前已经看到过这种行为。
当然,如果上述更改也导致崩溃,则存在一个更深层次的问题,我认为我们需要更多有关ExternalWebView
的信息。