iOS: Насколько безопасна сериализация объектов для сохранения данных в applicationWillTerminate?Есть ли шанс, что сериализация не будет завершена? - PullRequest
3 голосов
/ 11 июля 2011

Я понимаю, что вы обычно сериализуете объекты для сохранения данных, используя протокол NSCoder в applicationWillTerminate.Есть ли вероятность, что эта сериализация не будет завершена?Т.е. батарея вот-вот разрядится, поэтому приложение закрывается, и до того, как сериализация может быть завершена, батарея полностью разряжается.

Я создаю приложение, в котором процесс для пользователя добавляет новый объект (как финансовый отчет) довольно вовлечен.Следовательно, неудача в сериализации объекта была бы довольно раздражающей, потому что воссоздание этого объекта заняло бы немного времени.Должен ли я выполнять сериализацию сразу после того, как пользователь нажмет кнопку «Сохранить», или я могу быть уверен, что сериализация завершится в 99,9% времени на applicationWillTerminate?

В аналогичной заметке, если у меняэти данные синхронизируются с сервером, будет ли у моего приложения достаточно времени, чтобы выполнить эту синхронизацию на applicationDidEnterBackground?

1 Ответ

3 голосов
/ 11 июля 2011

Для приложений, которые не отказываются от многозадачности (установив UIApplicationExitsOnSuspend в YES в Info.plist), applicationWillTerminate: не всегда будет вызываться, вместо этого вам следует выполнить сериализацию в applicationDidEnterBackground:.

Самый значительный риск заключается в том, что ваша сериализация занимает слишком много времени, и демон watchdog убивает ваше приложение до его завершения. Это произойдет, если ваша сериализация занимает более 5 секунд, что вполне может произойти, если вы сериализуете большие объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...