我发现我的 UIViewcontrollerdeinit()
在以下情况下没有调用。我正在使用这个代码扩展,通过添加点击手势识别器让我的生活更轻松。
https://gist.github.com/saoudrizwan/548aa90be174320fbaa6b3e71f01f6ae
我在我的一个 VC 中使用了这段代码,我已经将其精简到最少的代码量:
viewDidLoad()
我这样做了:
// When the user taps on a label, have its related textbox automatically get the caret so they can type
// Add tapping so when you tap on a label it makes the corresponding textbox first responder
lblSubject.addTapGestureRecognizer {
self.txtSubject.becomeFirstResponder()
}
看来该行:
self.txtSubject.becomeFirstResponder()
是问题所在 - 当我将这一行留在该闭包中时,deinit()
不会调用我的 VC。当我取出上述线路或将其替换为诸如print("hello world")
deinit()
正确调用之类的内容时。txt主题是 @IBOutlet weak var txtSubject: UITextField!
我不完全确定在这里做什么。我读到,当你触发时becomeFirstResponder()
,你打电话很重要resignFirstResponder()
,但即使我不点击标签(以免给becomeFirstResponder()
机会打电话)我仍然无法击中deinit()
有什么想法可以让我进一步了解吗?
非常感谢。