【发布时间】:2011-04-07 22:31:04
【问题描述】:
通过pushViewController方法添加视图后,导航栏中会有一个返回按钮,用于将视图弹出堆栈。但是,似乎iOS在将视图从堆栈中弹出后不会销毁视图,那么它什么时候会被销毁?弹出视图时可以手动销毁吗?
【问题讨论】:
标签: iphone ios uiviewcontroller uinavigationcontroller pushviewcontroller
通过pushViewController方法添加视图后,导航栏中会有一个返回按钮,用于将视图弹出堆栈。但是,似乎iOS在将视图从堆栈中弹出后不会销毁视图,那么它什么时候会被销毁?弹出视图时可以手动销毁吗?
【问题讨论】:
标签: iphone ios uiviewcontroller uinavigationcontroller pushviewcontroller
一般模式是这样的:
- (void)pushSomeViewControllerOnStack
{
SomeViewController* someViewController = [[SomeViewController alloc] initWithNibName:@"SomeView" bundle:nil];
[self.navigationController pushViewController:someViewController animated:YES];
[someViewController release];
}
换句话说,导航控制器将自己处理视图控制器的retain,这意味着您也需要自己处理release,因为有一个init。导航控制器也会在适当的时候释放这个控制器。
【讨论】:
您应该在您的UIViewController 子类中实现viewDidUnload 和dealloc 方法。
当UINavigationController 将视图控制器从其堆栈中弹出时,将执行这些方法中的代码。
您应该阅读 Apple 的 iOS 开发人员库中的 View Controller Programming Guide for iOS: Navigation Controllers 文档以及 UINavigationController 和 UIViewController 类的类参考文档,以便您更好地了解视图控制器的生命周期以及在各种情况下会发生什么应用程序事件发生。
【讨论】: