为什么initWithRootViewController不保留传递给它的viewController类?

Ben*_*Ben 1 iphone uinavigationcontroller

我有一个名为SourceListViewController的自定义viewController,我将它添加到UINavigationController中,然后将其视图添加到iphone App的窗口中.在将SourceListViewController传递给UINavigationController之后,我发布了sourceListViewController.

SourceListViewController *sourceListVC = [[SourceListViewController alloc] initWithNibName:@"SourceListViewController" bundle:nil];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:sourceListVC] autorelease];
[sourceListVC release];
Run Code Online (Sandbox Code Playgroud)

当我这样做时,应用程序会在视图加载到手机后崩溃.当我注释掉最后一行时,应用程序正常工作.是不是initWithRootViewController应该保留sourceListVC的副本?

die*_*ikh 8

您正在自动释放navigationController.因此,如果navigationController得到自动释放(可能会在下一个runloop中发生),那么sourceListVC也是如此.