2

我有一个导航控制器和表视图。当有人点击桌面视图时,我执行以下操作:UINavigationController泄漏/理解popViewController

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

myViewController将保留图像。

现在,如果我在NavigationController中来回移动,则会发生泄漏,因为每次都会创建一个新的MyViewController,而且显然popViewController不会释放myViewController。我的问题: 为什么popViewController不释放控制器? 我应该如何处理?把myViewController作为我的类的成员,并检查它是否已经存在,而不是每次创建它?

预先感谢您的帮助,

回答

1

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

0

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