我已经在很长很长一段时间里对这个问题感到头疼,但我仍然没有找到一种方法来有效地做到这一点并且不会同时使用太多内存(在iOS上,内存非常有限)。
我基本上有非常大的纯文本文件(平均15MB),然后我需要解析并导入到Core Data。
我目前的实现是在Core Data上有一个Article实体,它与Page实体有“很多”关系。
我也在使用此线阅读器库的略微修改版本:https://github.com/johnjohndoe/LineReader
当然,我创建的Page实体越多,我创建的内存开销就越多(在实际的NSString行之上)。
无论我调整每页的行数或每行的字符数,内存使用量都非常疯狂(~300MB +),而只需将整个文本文件作为单个字符串导入即可快速达到峰值〜 180MB并在几秒钟内完成,前者需要几分钟。
线路阅读器本身可能有问题,因为我在完成后刷新托管上下文中的页面,据我所知,应该从内存中释放它们。
无论如何,有没有人有关于我应该如何实现这一点的任何说明,技巧或想法?理想情况下,我希望能够支持页面,因为无论如何我都需要能够导航文本,然后将整个文本加载到内存中听起来并不是很有趣。
注意:文章&页面实体方法在导入后工作正常,但导入本身就会过度使用内存。
编辑:出于某种原因,从上下文中删除Article实体时,Core Data也消耗了大约300MB的内存。关于为什么会发生这种情况的任何想法,或者如何解决这个问题?