我收到错误Cannot form weak reference to instance (0x15919e00) of class TestClass. It is possible that this object was over-released, or is in the process of deallocation.
以及下面的代码。
如果我删除了addObserver
和removeObserver
行,我的代码就不会崩溃。我不确定为什么会发生这种情况。有没有人有任何想法?在此先感谢您的帮助!
class TestClass: NSObject {
lazy var tableView: UITableView = {
let tableView = UITableView(frame: .zero, style: .plain)
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 52.0
tableView.delegate = self
tableView.dataSource = self
let nib = UINib(nibName: "CustomCell", bundle: nil)
tableView.register(nib, forCellReuseIdentifier: "customCell")
tableView.addObserver(self, forKeyPath: "myPath", options:nil, context: nil)
return tableView
}()
deinit {
tableView.removeObserver(self, forKeyPath: "myPath")
}
}
答案 0 :(得分:0)
懒惰变量和弱引用并没有真正融合在一起。我认为问题在于tableView被声明为lazy var。将其更改为只读变量,你应该没事......