UINavigationController泄漏/理解popViewController

时间:2010-04-30 23:29:11

标签: iphone memory-leaks uiviewcontroller uinavigationcontroller

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

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

myViewController将保留图像。

现在,如果我在NavigationController中来回走动,我会收到泄漏,因为每次都会创建一个新的MyViewController,显然popViewController不会释放myViewController。

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

先谢谢你的帮助,

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

中的视图