KVO的坑-不移除监听会导致奔溃

最近上手的项目是公司7年前的代码了。。。2011年啥概念。。。

时间紧任务重,要求在年前出新版。。。

有一些复杂的功能*移植老代码。。。查看PDF文件的代码都是利用上下文画上的

没咋注意 然后把相应文件的 release 等等 dealloc方法都干掉了。。然后鸽鸽就掉坑里了,我这边模拟器,真机测试都不奔溃。。。

然后移交测试总说打开文件就奔溃???

后来换了一个ipad ,居然这个ipad跑起来还真的查看文件的时候就奔溃了?神马情况 当时高兴的我终于有机会找bug了,我擦

一看下面终端输出


2018-02-12 19:22:31.981 PACM_ipad[548:2040225] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'An instance 0x17b91000 of class HYRPDFReaderViewController was deallocated while key value observers were still registered with it. Current observation info: <NSKeyValueObservationInfo 0x176558b0> (

<NSKeyValueObservance 0x175028f0: Observer: 0x17b91000, Key path: currentPage, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x175f97b0>

)'



2018-02-12 19:19:26.345 PACM_ipad[541:2039055] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'An instance 0x18d1da00 of class ReaderContentView was deallocated while key value observers were still registered with it. Current observation info: <NSKeyValueObservationInfo 0x191648d0> (

<NSKeyValueObservance 0x191648a0: Observer: 0x18d1da00, Key path: frame, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x191616d0>

)'


瞬间精神了,原来是KVO的问题,然后到我的文件里看了一下果然是有使用KVO 但是dealloc方法被我干掉了,然后查看老代码的dealloc 果然里面写着删除监听的代码。。。

KVO的坑-不移除监听会导致奔溃


各位看官肯定不会像我如此粗心