在快速弹出

时间:2017-11-02 09:01:21

标签: ios swift

我有一个项目的一部分,用户注销。我正在做一个典型的popTo,我回到第一个viewcontroller。问题是我有传感器仍然在运行并触发来自viewcontrollers的print语句,这些语句应该从堆栈中弹出并且不再存在。下面我有我的pop到root代码。被注释掉的部分是我使用过的不同的流行方法,它们都以相同的结果结束,我最终得到了正确的视图控制器,但似乎带有传感器的那个仍在运行。任何帮助都会非常感谢。我不包含带有传感器的viewcontroller中的任何代码,因为它不应该存在,因此其中的代码应该是无关紧要的(可能不会,但我怀疑它)。

if let nav = self.navigationController {
     let viewControllers: [UIViewController] = self.navigationController!.viewControllers as [UIViewController]
     nav.popToRootViewController(animated: true)
} else {
     self.presentingViewController!.presentingViewController!.presentingViewController!.dismiss(animated: true, completion: {})
}

1 个答案:

答案 0 :(得分:1)

在某些地方,您对ViewControllers有强烈的引用,因此它们不会被释放。这意味着即使它们不在堆栈中,它们也将继续工作。

可能会检查代码中的保留周期。传感器是否能够为您的ViewControllers提供强大的参考,而您的VC拥有对传感器的强大参考?只是一个猜测。

在ViewControllers deinit()方法中放置一个打印件,这样你就可以看到它们是否被销毁。