这应该是非常直接的。
当我使用导航控制器从我的根视图转到第二个视图时,第二个视图加载正常。 第二个视图在“viewDidLoad”中创建一个计时器,以定期调用方法“updateData”。
也许我不是在这里理解系统,但是当我回到root并再次转发到第二个视图时,我得到了一个全新的第二个视图控制器实例,它创建了一个新的计时器(updateData是被频繁调用两次。
这是不正确的默认行为吗?如何显示第二个视图控制器的第一个实例而不是创建一个新实例?
答案 0 :(得分:1)
持久对象不应该是视图控制器的属性,这不一定是真的。您可以为第二个控制器(在根视图控制器中)创建一个属性,并且只在第一次推送它时才实例化它。因为你有一个强大的指针,当你回到第一个控制器时它不会被释放,你的计时器将继续运行。
- (IBAction)goToSecondView {
if (!self.secondViewController) { // secondViewController is a strong property
self.secondViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Second"];
}
[self.navigationController pushViewController:self.secondViewController animated:YES];
}
答案 1 :(得分:0)
脱离我的头脑:在你的第二个视图控制器deallocate方法中,你应该停止“updateData”的计时器,因为它没有被正确释放。试试吧!
[self.timer invalidate];