Загружает ли NSFileManager moveItemAtPath: toPath: error метод файл, перемещаемый в память? - PullRequest
0 голосов
/ 08 сентября 2018

Я переместил базу данных каждого пользователя .sqlite в другой каталог в своем последнем обновлении приложения. Я использовал метод Core Data migratePersistentStore:toURL:options:withType:error, и приложения некоторых пользователей закрывались из-за чрезмерного объема используемой памяти. Итак, я возвращаюсь к методу moveItemAtPath:toPath:error NSFileManager. Я не верю, что это загружает базу данных в память так же, как migratePersistentStore:toURL:options:withType:error, но я обеспокоен тем, что перемещение очень большой базы данных может по-прежнему вызывать те же проблемы с памятью. Я мог бы воспользоваться некоторыми советами - кто-нибудь точно знает, загружен ли файл в память при его перемещении? Есть ли способ переместить ОЧЕНЬ большой файл так, чтобы он относился с уважением к памяти устройства? Есть ли лучший метод, чем moveItemAtPath:toPath:error для этого?

1 Ответ

0 голосов
/ 08 сентября 2018

Я согласен с вами, что перемещение с NSFileManager должно только изменить связь в файловой системе и ничего не загружать в память. Но если вы действительно хотите знать наверняка , не верьте ответу, который вы получаете на Stack Overflow, протестируйте его сами в своем приложении! Во время работы приложения в XCode нажмите Debug Navigator , затем инструмент Show Debug Gauges , затем Memory . Это выглядит очень красиво.

enter image description here

Затем проверьте одно из ваших перемещений файлов и убедитесь, что в памяти нет скачка.

...