查看控制器获取重复实例

这应该是非常简单的。

当我使用导航控制器从我的根视图继续我的第二个视图,第二个视图加载罚款。 第二个视图在“viewDidLoad”中创build一个定时器,定期调用一个方法“updateData”。

也许我不理解这里的系统,但是当我回到根,并再次转发到第二个视图,我得到第二个视图控制器的一个全新的实例,这使得一个新的计时器(updateData被调用两次如同频繁)。

这是不是正确的默认行为是? 如何显示第二个视图控制器的第一个实例,而不是创build一个新的?

持久对象不一定是视图控制器的属性。 您可以为第二个控制器(在根视图控制器中)创build一个属性,并且只有在您第一次按下它时才进行实例化。 因为你有一个强大的指针,当你回到第一个控制器时,它不会被释放,你的计时器将继续运行。

- (IBAction)goToSecondView { if (!self.secondViewController) { // secondViewController is a strong property self.secondViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Second"]; } [self.navigationController pushViewController:self.secondViewController animated:YES]; } 

closures我的头顶部:在第二个视图控制器释放方法中,您应该停止“updateData”的定时器,因为它没有正确释放。 尝试一下!

 [self.timer invalidate];