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的内存图功能,找到视图控制器并查看是什么使其保持活动状态