在APP中使用了UIScrollView+HeaderScaleImage.h粟誓,發(fā)現(xiàn)在iOS 8 系統(tǒng)上app中任何的uitableview被釋放之后瑟曲,再點擊屏幕就會crash卸察,報[UITableView _systemGestureStateChanged:]: message sent to deallocated instance 0x17385200,ios 9 ios 10完全沒有問題
2.后來發(fā)現(xiàn)任何的collectionview被釋放之后,點擊屏幕也會crash山上,報
[UICollectionView _systemGestureStateChanged:]: message sent to deallocated instance 0x17385200
3.把目光放在UIScrollView上套啤,查找UIScrollView的分類,是否有問題
4.找到 UIScrollView+HeaderScaleImage.h 注釋了其中一部分代碼,并把所有的引用都注釋掉肠缨,依然有這個問題逆趋。
5.開始將目光放在_systemGestureStateChanged上,還有僵尸對象上晒奕,用instrument調(diào)試闻书,依然無解。
6.六個小時過去了脑慧。
7.睡了一覺魄眉,然后又把目光放在UIScrollView上,將UIScrollView+HeaderScaleImage.h 中的代碼全部注釋掉了闷袒。
8.正常坑律。感覺世界都亮了。
9.一步一步注釋囊骤,排除脾歇,最后發(fā)現(xiàn)這個里面重寫了uiscrollview的dealloc方法蒋腮,導致scrollview在釋放的時候無法清除自己的觀察者身份,導致系統(tǒng)發(fā)通知的時候仍然能發(fā)到它身上藕各。ios 9 沒問題池摧,ios8上就會直接crash。
10.將最后那個dealloc中的代碼另外立出來激况,在controller的dealloc中主動調(diào)用這個方法作彤,整個app沒幾個頁面用這個,所以也并沒有增加太多的工作量乌逐。