我有一个带有多个视图的应用程序,每个视图都是自己的视图控制器。我正在使用以下方法切换视图。
TableViewSelect *tableview = [[TableViewSelect alloc] initWithNibName:nil bundle:nil];
[self presentViewController: tableview animated:YES completion:NULL];
我在另一个问题中被告知,这会导致新视图显示在上一个视图上,但不会释放内存。因此,当用户翻转视图时,内存总是在增长。即内存泄漏。任何人都可以告诉我如何在离开视图时切换内存被释放的视图。
由于
答案 0 :(得分:1)
在某些时候,建议:
//in TableViewSelect class on some action
[self dismissViewControllerAnimated:YES completion:nil];
另外......取决于你的流程,但是你说你有以下课程:
AppDelegate
ViewController
FirstVC
SecondVC
ThirdVC
说:
AppDelegate
的rootViewController是ViewController
ViewController
介绍FirstVC
FirstVC
介绍SecondVC
所以现在......你已经SecondVC
并且需要再次显示FirstVC
,然后在这种情况下,为了节省记忆,你需要解雇{{1} }}
但是......如果你有甚至远程的东西:
SecondVC
- > FirstVC
- > SecondVC
(返回) - > ThirdVC
强> 然后你用FirstVC
做得更好,因为这似乎是一种潜在的记忆力。
答案 1 :(得分:0)
如果您只想一次显示一个视图,则可以执行以下操作...
@property (nonatomic, strong) UIVIewController *currentViewController;
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)animated completion:(void (^)(void))completion {
if (self.currentViewController != nil) {
[self.currentViewController dismissViewControllerAnimated:animated completion:^{
self.currentViewController = viewControllerToPresent;
[super presentViewController:viewControllerToPresent animated:animated completion:completion];
}];
} else {
self.currentViewController = viewControllerToPresent;
[super presentViewController:viewControllerToPresent animated:animated completion:completion];
}
}