下面是减少的代码,以演示我遇到的问题。
我分配并初始化一个视图控制器。init 方法是标准的Objective C init,所以视图控制器还没有做任何事情。然后我创建了一个使用新创建的视图控制器初始化根的 navigationController。然后我释放视图控制器,因为导航现在有了它,我不需要它。在下一行 nav 被释放,我希望视图控制器的 dealloc/viewDidUnload 会被调用。相反,他们不是。如果我不将sportsViewController 放在nav 控制器上,则在sportsViewController 释放后会调用dealloc。我究竟做错了什么?(顺便说一句,我还有其他类似的代码可以正常工作)
SportsViewController *sportsViewController = [[SportsViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:sportsViewController];
[sportsViewController release];
[nav release];