不能形成对类实例的弱引用

时间:2017-07-12 22:24:03

标签: ios swift xcode swift3

我收到错误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.以及下面的代码。

如果我删除了addObserverremoveObserver行,我的代码就不会崩溃。我不确定为什么会发生这种情况。有没有人有任何想法?在此先感谢您的帮助!

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") 
     }
}

1 个答案:

答案 0 :(得分:0)

懒惰变量和弱引用并没有真正融合在一起。我认为问题在于tableView被声明为lazy var。将其更改为只读变量,你应该没事......