UIScrollView+HeaderScaleImage.h 在iOS8上的坑

在APP中使用了UIScrollView+HeaderScaleImage.h,发现在iOS 8 系统上app中任何的uitableview被释放之后,再点击屏幕就会crash,报[UITableView _systemGestureStateChanged:]: message sent to deallocated instance 0x17385200,ios 9 ios 10完全没有问题

2.后来发现任何的collectionview被释放之后,点击屏幕也会crash,报

[UICollectionView _systemGestureStateChanged:]: message sent to deallocated instance 0x17385200

3.把目光放在UIScrollView上,查找UIScrollView的分类,是否有问题

4.找到 UIScrollView+HeaderScaleImage.h 注释了其中一部分代码,并把所有的引用都注释掉,依然有这个问题。

5.开始将目光放在_systemGestureStateChanged上,还有僵尸对象上,用instrument调试,依然无解。

6.六个小时过去了。

7.睡了一觉,然后又把目光放在UIScrollView上,将UIScrollView+HeaderScaleImage.h 中的代码全部注释掉了。

8.正常。感觉世界都亮了。

9.一步一步注释,排除,最后发现这个里面重写了uiscrollview的dealloc方法,导致scrollview在释放的时候无法清除自己的观察者身份,导致系统发通知的时候仍然能发到它身上。ios 9 没问题,ios8上就会直接crash。

10.将最后那个dealloc中的代码另外立出来,在controller的dealloc中主动调用这个方法,整个app没几个页面用这个,所以也并没有增加太多的工作量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,221评论 30 472
  • 1,警告:“xoxoxoxo” is deprecated解决办法:查看xoxoxoxo的这个方法的文档,替换掉这...
    layjoy阅读 4,461评论 0 3
  • 对自己哪里都没自信 唯有人缘。今天才知道 原来我什么都没有了。当你说出友尽的时候 我以为是开玩笑 原来不是。谢谢你...
    wamagdmgwam阅读 807评论 0 1
  • 1 AssetBundle AssetBundle 是Unity提供的一个功能,可以把资源(包括预设、模型、贴图等...
    superzhan阅读 2,450评论 0 3
  • 你总说 人生短暂 容易错过 终留遗憾 深情总敌不过意乱情迷 犹犹豫豫还是做不了决定 多年之后 再回首 才知晓这有...
    不敢说爱你阅读 228评论 0 1