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

时间:2009-06-28 14:11:05

标签: 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];

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

1 个答案:

答案 0 :(得分:8)

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