OStack程序员社区-中国程序员成长平台

标题: ios - View Controller 获得重复实例化 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 00:34
标题: ios - View Controller 获得重复实例化

这应该很简单。

当我使用导航 Controller 从我的 Root View 切换到我的第二个 View 时,第二个 View 加载正常。 第二个 View 在“viewDidLoad”中创建了一个计时器来定期调用“updateData”方法。

也许我不了解这里的系统,但是当我回到根目录并再次转发到第二个 View 时,我得到了第二个 View Controller 的全新实例,它创建了一个新计时器(updateData 是被调用的频率是两倍)。

这不是正确的默认行为吗?如何显示第二个 View Controller 的第一个实例而不是创建一个新实例?



Best Answer-推荐答案


持久对象不一定是 View Controller 的属性。您可以为您的第二个 Controller (在 Root View Controller 中)创建一个属性,并且仅在您第一次推送它时实例化它。因为你有一个强指针指向它,所以当你回到第一个 Controller 时它不会被释放,你的计时器会继续运行。

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

关于ios - View Controller 获得重复实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25194443/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4