UITableview释放因KVO错误

时间:2017-06-13 09:44:40

标签: ios objective-c uitableview uinavigationcontroller dealloc

我正在使用UITableview进行聊天收件箱视图,我的导航堆栈就像

(
    "<VTDiscoverHome3ViewController: 0x7ff094758f00>",
    "<VTInboxViewController: 0x7ff098de34d0>",
    "<VTChatViewController: 0x7ff095827e00>",
    "<VTDiscoverProfessionalDetailsViewController: 0x7ff095424a00>",
    "<VTRequestScheduleViewController: 0x7ff095814c00>"
)

因此,当从顶视图弹出到主视图时,我收到了收件箱视图中的崩溃

An instance 0x7ff094a33800 of class UITableView was deallocated while key value observers were still registered with it. Current observation info: <NSKeyValueObservationInfo 0x608002e3f680> (
<NSKeyValueObservance 0x60800585c1d0: Observer: 0x7ff098f1b8d0, Key path: contentOffset, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x60800585c140>
<NSKeyValueObservance 0x60800585c320: Observer: 0x7ff098f1b8d0, Key path: contentSize, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x60800585c290>
<NSKeyValueObservance 0x60800585c410: Observer: 0x7ff098f1b8d0, Key path: frame, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x60800585c380>
<NSKeyValueObservance 0x60800585c500: Observer: 0x7ff098f1b8d0, Key path: contentInset, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x60800585c470>
)'

我尝试删除tableview观察者并设置

self.tableView.delegate = nil;
self.tableView.dataSource = nil;
self.tableView = nil;

但仍然没有运气

我不明白为什么我会遇到这个崩溃。

任何帮助都会非常明显。

感谢。

1 个答案:

答案 0 :(得分:0)

得到了解决方案。

我正在使用一个pull to refresh类,它将一些观察者添加到tableview的{​​{1}}

因此,虽然解除分配有时会崩溃。

因此,在删除scrollview时添加了trycatch阻止。