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 に答える