这是我删除不再在应用程序中再次使用的UIViewControllers的方法。

NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: self.navigationController.viewControllers];
    [allViewControllers removeObjectAtIndex:0];
    [allViewControllers removeObjectAtIndex:1];



这是从堆栈中删除视图的正确方法吗?
使用Instruments运行应用程序时,我注意到当应用程序进入执行以上代码的阶段时,内存并未释放。这是怎么了?

最佳答案

通过将视图控制器分配到新的可变数组中,可以将其保留计数增加1,删除它们可以将其保留计数减少1,因此净效果为零。您想要做的是在移除视图控制器后,将其替换为导航控制器的一部分,然后通过使导航控制器释放您的旧实例。

NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[allViewControllers removeObjectAtIndex:0];
[allViewControllers removeObjectAtIndex:1];

[self.navigationController setViewControllers:allViewControllers animated:YES];

关于objective-c - 从堆栈中永久删除UIViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9229621/

10-09 22:06