dengzemiao / DZMeBookRead

支持项目使用!最完整小说阅读器Demo!仿iReader(掌阅),QQ阅读 ... 常用阅读器阅读页面,支持 翻页效果(仿真,覆盖,平移,滚动,无效果)、字体切换、书签功能、阅读记录、亮度调整、背景颜色切换 ...
MIT License
1.23k stars 325 forks source link

上下滑动模式,快速滑动,崩溃 #42

Closed liuqingtong closed 4 years ago

dengzemiao commented 4 years ago

@liuqingtong 我知道原因,其实就是滚动页面我是用一个字典记录当前的列表章节数据的 {章节id:章节数据} 这样格式,以前的版本是没有问题的,但是现在却经常在这里通过key取出value的时候出现坏内存,理论上是字典里面的对象应该都是强引用,以前的swift语言版本是没有问题的。之前试过多种方式,都没法保证字典里面的对象被释放,但是时间紧,没太多时间去研究解决方案,其实你可以换成别的数据源记录方式,下面这个就是现在记录当前页面数据的字典,崩溃就是因为它通过key获取 DZMReadChapterModel 的时候,DZMReadChapterModel 是释放了的坏内存,以前的版本是不会出现字典里面的对象释放的,好像是ios12以后就出现这个问题,ios12以前都是没任何问题的。

/// 当前阅读的章节列表,通过已有的章节ID列表,来获取章节模型。 private var chapterModels:[String:DZMReadChapterModel] = [:]

项目里面我也有提示:

现在有个BUG在iOS12.2以后, iOS12.2以前到没出现,我这边测试机用的X才会系列会出现,其他机型好像也不会,滚动模式 DZMReadViewScrollController -> chapterModels 字段里面章节model会提前释放,不会被强引用,很是郁闷, 低版本没有问题。 拿到Demo的可以测试一下滚动模式下会不会有问题。其实就是章节Model提前释放了,但是我存放的是字典对象,理论上是强引用对象的,现在12.2却出现这样的问题。

dengzemiao commented 4 years ago

我现在暂时不开发ios,所以没时间去研究这个,如果你们解决了可以留言告知一下解决方案。或者等我以后有时间在去解决它。