【问题标题】:UINavigationController leak/understanding popViewControllerUINavigationController 泄漏/理解 popViewController
【发布时间】:2010-04-30 23:29:11
【问题描述】:

我有一个导航控制器和一个表格视图。当有人点击表格视图时,我会执行以下操作:

MyViewController *myViewController = [[MyViewController alloc] initWithImage:image];
[image release];
[self.navigationController pushViewController:myViewController animated:YES];
[myViewController release];

myViewController 将保留图像。

现在,如果我在 NavigationController 中来回切换,我会遇到泄漏,因为每次都会创建一个新的 MyViewController,而且显然 popViewController 没有释放 myViewController。

我的问题: popViewController 为什么不释放控制器? 我应该如何处理?将 myViewController 作为我的类的成员并检查它是否已经存在而不是每次都创建它?

提前感谢您的帮助,

【问题讨论】:

    标签: iphone memory-leaks uiviewcontroller uinavigationcontroller


    【解决方案1】:

    显然问题在于这段代码是在另一个线程中调用的,然后这个线程必须有另一个自动释放池才能让自动释放正常工作。

    【讨论】:

      【解决方案2】:

      我通常在类中声明一次 viewController,在 init 中分配并在需要时推送。然后在推送的视图控制器中调整viewWillAppear:中的视图

      【讨论】: