Closed liuqingtong closed 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却出现这样的问题。
我现在暂时不开发ios,所以没时间去研究这个,如果你们解决了可以留言告知一下解决方案。或者等我以后有时间在去解决它。
@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却出现这样的问题。