NSFileManager的moveItemAtPath:toPath:error方法是否加载了正在移动到内存中的文件?

问题描述 投票:0回答:1

我将每个用户的.sqlite数据库移动到我最新的应用更新中的不同目录。我使用的是核心数据方法migratePersistentStore:toURL:options:withType:error,由于使用的内存过多,一些用户的应用程序正在关闭。所以我恢复到NSFileManager的moveItemAtPath:toPath:error方法。我不相信将数据库加载到内存中的方式与migratePersistentStore:toURL:options:withType:error相同,但我担心移动一个非常大的数据库仍然会出现相同的内存问题。我可以使用一些建议 - 有人知道文件在移动时是否加载到内存中?有没有办法以尊重设备内存的方式移动非常大的文件?有没有比moveItemAtPath:toPath:error更好的方法呢?

ios sqlite memory core-data nsfilemanager
1个回答
2
投票

我同意你的意见,使用NSFileManager移动应该只更改文件系统中的链接,并且不会将任何内容加载到内存中。但是,如果你真的想知道,不要相信你在Stack Overflow上得到的答案,在你的应用程序中自己测试!在Xcode下运行应用程序时,单击Debug Navigator,然后单击Show Debug Gauges工具,再单击Memory。它看起来很漂亮。

enter image description here

然后测试一个文件移动并验证没有内存峰值。

© www.soinside.com 2019 - 2024. All rights reserved.