Я делаю приложение для рисования растровых изображений на iPhone. Я хочу поддерживать около пяти слоев 1024x768 (~ 15 МБ данных). Моя проблема в том, что я не знаю, какую стратегию использовать для сохранения документа пользователя, чтобы справиться с прерыванием моего приложения.
В настоящее время мой формат файла документа состоит в том, чтобы сохранить каждый слой в виде файла .png, а затем сохранить короткий текстовый файл, содержащий метаданные слоя. Моя проблема в том, что если приложение прерывается чем-то вроде телефонного звонка, у меня вряд ли будет достаточно времени, чтобы мое приложение могло сохранить все данные на диск, так как сохранение всех файлов .png может занять ~ 10 секунд. Какие варианты у меня есть?
Я подумал о добавлении функции автосохранения, которая будет вызываться каждые пять минут. В худшем случае пользователь потеряет несколько минут работы, если приложение не сможет сэкономить на прерывании (что не идеально).
Идея, которую я рассмотрел, состоит в том, чтобы отслеживать, какие слои изменились с момента последнего автосохранения, и обновлять только файлы слоев, которые необходимо обновить. Это означает, что при прерывании моему приложению может потребоваться сохранить только один слой в типичном случае. Однако в худшем случае все еще приходится сохранять несколько слоев.
Я не уверен, что делать. С практической точки зрения, я заметил, что многие популярные приложения для рисования на iPhone с хорошими рецензиями потеряют текущее состояние документа, если прервутся по телефону. Я начинаю сомневаться, что есть способ решить эту конкретную проблему, и что мне, возможно, придется пойти с чем-то менее идеальным.