dengzemiao / DZMeBookRead

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

网络小说点击切换上一章会在这里崩溃 #50

Open xuhuaping opened 4 years ago

xuhuaping commented 4 years ago

pageViewController.setViewControllers([displayController, GetReadViewBGController(recordModel: displayController?.recordModel, targetView: displayController?.view)], direction: direction, animated: animated, completion: nil)

xuhuaping commented 4 years ago

切换上下滚动也会崩溃

dengzemiao commented 4 years ago

@xuhuaping 如果你接入了网络小说 是不是你哪里没有处理好 我demo本地是没有崩溃的 只能说明处理的时候 你哪里漏了 你看崩在哪里看下数据有错误没 你这个没啥信息含量不好解决 我demo你试试会崩么,如果没有应该是你导入接口数据可能哪里没有处理好。

xuhuaping commented 4 years ago

@xuhuaping 如果你接入了网络小说 是不是你哪里没有处理好 我demo本地是没有崩溃的 只能说明处理的时候 你哪里漏了 你看崩在哪里看下数据有错误没 你这个没啥信息含量不好解决 我demo你试试会崩么,如果没有应该是你导入接口数据可能哪里没有处理好。

GetReadViewBGController我把这个方法改成GetReadViewController就可以,还有上下滚动模式崩溃有什么好的方法解决吗

dengzemiao commented 4 years ago

@xuhuaping GetReadViewBGController 只是个背景 你去掉都行,上下滚动的那个崩溃issues 里面有这个问题,其实就是存放章节的那个

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

这个存放庄家model的value 会被释放掉。一直没搞明白咋回事 内部应该是强引用的,解决的办法目前只有老版本的做法 就是每次从本地文件获取 你可以看看之前swift4的版本。但是这样会在滚动的时候比较不流畅 没这个流畅,或者你可以试着换个存放方式保证model在这个存放的容器里面不被释放看看,其实它崩溃的原因就是在这个由 缓存文件变成model之后存放到的这个字典,但是通过key去获取的时候,在某种请求下会被释放 导致通过key获取不到value为坏内存就崩溃了。我之前想过别的办法 缓存数组也出现了这种情况。后面忙了也没时间去深究了。