私はSourceListViewControllerと呼ばれるカスタムviewControllerを持っています。それをUINavigationControllerに追加しています。そのビューは、iPhoneのAppのウィンドウに追加されます。 SourceListViewControllerをUINavigationControllerに渡した後、私はsourceListViewControllerを解放します。initWithRootViewControllerは、渡されるviewControllerクラスを保持しないのはなぜですか?
SourceListViewController *sourceListVC = [[SourceListViewController alloc] initWithNibName:@"SourceListViewController" bundle:nil];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:sourceListVC] autorelease];
[sourceListVC release];
このようにすると、ビューが携帯電話に読み込まれた後にアプリがクラッシュする可能性があります。私は最後の行をコメントアウトすると、アプリは正常に動作します。 initWithRootViewControllerはsourceListVCのコピーを保持するはずですか?
これは、sourceListVCが保持されているわけではありません。それはNavigationControllerをリリースすると、そのViewControllerもすべて解放され、NVCはルートビューコントローラを保持しません。 – karim