我有一个导航控制器和一个表格视图。当有人点击表格视图时,我会执行以下操作:
MyViewController *myViewController = [[MyViewController alloc] initWithImage:image];
[image release];
[self.navigationController pushViewController:myViewController animated:YES];
[myViewController release];
myViewController将保留图像。
现在,如果我在NavigationController中来回走动,我会收到泄漏,因为每次都会创建一个新的MyViewController,显然popViewController不会释放myViewController。
我的问题: 为什么popViewController没有释放控制器? 我该怎么处理?将myViewController作为我的类的成员并检查它是否已经存在而不是每次都创建它?
先谢谢你的帮助,
答案 0 :(得分:1)
显然问题是这个代码是在另一个线程中调用的,然后这个线程必须有另一个自动释放池让autorelease正常工作。
答案 1 :(得分:0)
我通常在类中声明一次viewController,在init中声明并在需要时推送。然后在推动的视图控制器中,我调整viewWillAppear: