Когда я должен удалить ненужные данные для моего приложения iOS? Во время запуска или завершения?
Я использую CoreData и думаю о том, когда мне следует удалить ненужные (или просроченные) данные.
Из того, что я могу себе представить, пункты заключаются в следующем:
- Когда приложение запускается.
- Когда приложение заканчивается. (в приложении делегата
applicationWillTerminate:
)
Я полагаю, что нет риска, но я не хочу, чтобы пользователи ждали во время чистки. (Я знаю исключение сторожевой собаки. Если время очистки превышает 20 секунд, я подготовлю контроллер представления к ожиданию.)
Два выглядит красиво. Пользователи не видят время ожидания. Однако я не уверен, подходит ли этот пункт или нет? Некоторые люди говорят, что фоновый процесс имеет ограниченное время.
1 ответ
В любом случае вы, скорее всего, выиграете от запуска очистки во вторичном потоке. Скорее всего, вы не сможете использовать второй вариант:
Согласно Apple, документы по отношению к applicationWillTerminate
:
Ваша реализация этого метода имеет примерно пять секунд для выполнения любых задач и возврата. Если метод не возвращается до истечения времени, система может полностью завершить процесс.
Один из вариантов, который вы могли бы использовать, это очистка в applicationDidEnterBackground:
но это также имеет некоторые сложности:
Ваша реализация этого метода имеет примерно пять секунд для выполнения любых задач и возврата. Если вам нужно дополнительное время для выполнения каких-либо окончательных задач, вы можете запросить дополнительное время выполнения у системы, вызвав beginBackgroundTaskWithExpirationHandler:. На практике вы должны вернуться из applicationDidEnterBackground: как можно быстрее. Если метод не возвращается до истечения времени, приложение закрывается и удаляется из памяти.
Это может быть лучшим решением, и вы можете найти некоторые рекомендации в документации, на которую я ссылаюсь. Вероятно, это будет проще всего сделать во время запуска приложения.