窃听一次UITextField后出现内存泄漏(?)

时间:2019-01-13 13:25:53

标签: ios swift memory-leaks

感谢您阅读我的问题。 (对不起,我的英语不好。)
在我的代码中,我在Debug Memory Graph and Instruments(Xcode)上发现了内存泄漏。

这是我的代码(Swift4.2),

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.setUpUI()
    }

    private func setUpUI(){
        self.view.backgroundColor = .orange
        let textField = myTextField()
            textField.center = self.view.center
        self.view.addSubview(textField)
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
         self.view.endEditing(true)
    }
}

class myTextField:UITextField{
    override init(frame: CGRect) {
         super.init(frame: frame)
         self.setUpUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    private func setUpUI(){
        self.frame.size = CGSize(width: 300, height: 50)
        self.backgroundColor = .lightGray
        self.placeholder = "TEXT"
        self.delegate = self
    }
}

extension myTextField:UITextFieldDelegate{
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.resignFirstResponder()
        return true
    }
}

内存泄漏时
・在我的 iPhone6(iOS10.1)而不是iOS模拟器上运行此代码(在iOS模拟器上找不到此内存泄漏)。
・点击UITextField(显示键盘)一次后发现内存泄漏。
・结束编辑后(隐藏键盘),无法消除该内存泄漏。
・我使用Debug Memory Graph(Xcode)和Instruments(Leak Checks)。

我不知道发生了什么,以及解决此问题的最佳方法是什么。
有人可以帮我吗?
谢谢。

0 个答案:

没有答案