1

我有一个名为 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 的副本吗?

4

1 回答 1

8

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

于 2009-06-28T15:40:45.277 回答