Swift中PDFView加载本地PDF文件后是否可删除底层源文件
Swift PDFView加载本地PDF后能否删除源文件的解答
首先明确结论:默认情况下不可以直接删除底层源文档文件,特殊处理后可删除,具体逻辑如下:
- PDFKit中
PDFDocument的默认加载逻辑:当你通过本地文件URL初始化PDFDocument,再赋值给PDFView的document属性时,系统不会把整个PDF文件全量读入内存,仅会按需加载当前展示页、相邻预览页的缓存数据,后续用户滚动翻页时仍会读取本地源文件的内容。此时如果删除源文件,会出现后续页面加载空白、渲染异常甚至App崩溃的问题。 - 若你需要在PDF加载完成后删除源文件,可按以下方式处理:先将本地PDF文件全量读入内存生成
Data对象,再通过PDFDocument(data: 内存中的PDF数据)实例化文档对象赋值给PDFView。此时整个PDF的内容已经全部加载到内存中,后续PDFView渲染不再依赖本地源文件,你可以安全删除原文件。
小提示:如果PDF文件体积过大,全量读入内存会占用较多运行内存,可能导致App被系统强制杀死,建议你结合业务场景中PDF的平均大小判断是否需要采用该方案。
内容的提问来源于stack exchange,提问作者Rob Bonner
相关产品推荐
相关产品推荐

