Ios 问题:消息已发送到解除分配的实例

Ios 问题:消息已发送到解除分配的实例,ios,swift,xcode,crash,Ios,Swift,Xcode,Crash,我在HomeViewController中有一些代码。当我打开下一个控制器并点击按钮 let strotyboard = UIStoryboard(name: "Anketa", bundle: nil) if let anketaController = strotyboard.instantiateViewController(withIdentifier: "QuestionnaireViewController") as? Question

我在
HomeViewController
中有一些代码。当我打开下一个控制器并点击按钮

let strotyboard = UIStoryboard(name: "Anketa", bundle: nil)
    if let anketaController = strotyboard.instantiateViewController(withIdentifier: "QuestionnaireViewController") as? QuestionnaireViewController {
        anketaController.startNew = true
        print("1111 HomeViewController openNext , ", anketaController)
        present(anketaController, animated: true, completion: nil)
    }
当我返回到
HomeViewController
并再次点击按钮打开
QuestionnaReviewController
时,出现了一条错误消息:

“QuestionnaReviewController保留]:发送到已解除分配实例0x10480a400的消息”

我打印了-
print(“1111 HomeViewController openNext,”,anketaController)
第一次点击按钮是:

1111 HomeViewController openNext ,  <.QuestionnaireViewController: 0x10480a400>
1111 HomeViewController openNext ,  <.QuestionnaireViewController: 0x10901fa00>
1111 HomeViewController打开下一步,
在第二个点击的按钮上,它是:

1111 HomeViewController openNext ,  <.QuestionnaireViewController: 0x10480a400>
1111 HomeViewController openNext ,  <.QuestionnaireViewController: 0x10901fa00>
1111 HomeViewController打开下一步,

并且该应用程序在iOS 13上崩溃

这可能是您的
问题查看控制器
中的一个重要参考,因此当您关闭并返回
HomeViewController时,您的viewcontroller不会解除分配


ARC
在您退出时自动解除分配没有强引用的对象。如果您的
问题上有强引用,请查看控制器
修改您的引用或在代码中解除分配。

Omer的回答可能是正确的。我自己创建retain cycles时遇到了很多麻烦(即使在相当长的时间之后)。帮助我的是

如果视图控制器在2秒后未解除分配,则肯定会发生泄漏,因此断言将停止代码,您可以使用XCode的内存图功能,找到视图控制器并查看是什么使其保持活动状态