2015-04-10 7 views
1

Что происходит в iOS, когда nscoding writeToFile сохраняет и пользователь закрывает приложение?Что происходит в iOS, когда nscoding writeToFile сохраняет и пользователь закрывает приложение?

NSData *d = [NSKeyedArchiver archivedDataWithRootObject:self]; 
    [d writeToFile:FILE_PATH atomically:YES]; 

Например предположим, что существует 100 МБ пользовательских данных для сохранения - это, вероятно, займет некоторое время (NSData WriteToFile очень медленно) - так что если пользователь закрывает приложение, будет процесс записи просто не договорил и вы бы не синхронизировали данные?

Если да, есть ли способ предотвратить закрытие приложения пользователем до тех пор, пока вы не сохраните его?

+0

Приложение становится фоновым приложением, когда вы нажимаете кнопку дома. Он не закрывается. ОС может переходить в фоновое приложение с низкой памятью. –

ответ

2

Атомно, просто, чтобы гарантировать, что либо ВСЕ файл записан, либо НЕТ этого.

Nonatomically позволяет записывать и отрезать некоторые файлы.

Если есть причина, по которой приложение прекращается до того, как весь файл будет написан, и вы используете атомарно, файл НЕ будет записан на хранение. Процесс будет убит.

Если файл такой большой, я бы рекомендовал запустить какой-то экран загрузки, который говорит пользователю не закрывать приложение, а после его завершения скрывает этот экран загрузки, чтобы сообщить им, что это нормально, чтобы закрыть приложение.

+0

Это причина, по которой люди используют основные данные? Поскольку данные имеют более высокую вероятность сохранения локально, если пользователь пытается закрыть приложение? – user1709076

+0

Люди используют базовые данные, потому что они работают через обновления и версии приложений (и по другим причинам). Это более надежная система, но ее сложнее реализовать. – AlexKoren