0

我找不到问题!对此的任何帮助将不胜感激:我正在从 UITableView 推送一个新视图,其中包含一个带有 UIwebView 的视图以访问互联网。单击后退按钮时,我收到下一个错误: 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 !!!
}
4

1 回答 1

0

尝试dvController创建autorelease

ExternalWebView *dvController = [[[ExternalWebView alloc] 
       initWithNibName:@"ExternalWebView" bundle:nil] autorelease];

然后删除该[dvController release]语句。

如果您使用 Leaks 工具运行 Instruments 并确认您实际上没有泄漏 dvController,则会确认您没有泄漏。

我的预感是,您的控制器正在被另一个对象释放,而您的对象已成为其子视图。我以前在另一种情况下看到过这种行为。

当然,如果上述更改也导致崩溃,那么存在更深层次的问题,我认为我们需要更多关于ExternalWebView.

于 2011-04-15T21:15:03.410 回答