(iOS 4.x) Очистка NSUserDefaults при выходе из приложения - PullRequest
2 голосов
/ 11 января 2011

Итак, я много читал о том, как iOS обрабатывает уведомления о состоянии приложений, и похоже, что они могли создать для меня проблему в iOS 4.

До версии 4.x я очищал свои NSUserDefaults в методе делегата - (void)applicationWillTerminate:(UIApplication *)application {}.

К сожалению, похоже, что этот метод больше не используется, когда пользователь выходит из приложения с рабочего стола (нажимая красную «-»). Вместо этого приложение получает SIGKIL. Кто-нибудь придумал способ захватить это и сделать что-то, когда приложение завершено (например, очистить UserDefaults)? Я бы предпочел не отключать многозадачность, так как это нестандартное поведение. Любая помощь вообще будет оценена. Спасибо!

Ответы [ 3 ]

3 голосов
/ 11 января 2011

Этот метод все равно будет отправлен, если iOS решит выйти из приложения. Вероятно, вы должны поместить тот же код очистки в applicationWillResignActive: , если вы хотите, чтобы он также очищался при переходе на фон.

Однако, если вы говорите, что хотите поддерживать многозадачность, почему вы стираете настройки по умолчанию? Разве пользователь не сможет вернуться в приложение точно так, как он его покинул?

0 голосов
/ 11 января 2011

Вам все еще нужен код в applicationWillTerminate: для тех устройств iOS 4, которые не поддерживают многозадачность. Но вам также потребуется вызывать тот же код, когда приложение переходит в фоновый режим (applicationDidEnterBackground :). Вы также можете рассмотреть applicationWillResignActive :, но он будет вызываться при поступлении вызова или SMS, а не только при переходе в фоновый режим

0 голосов
/ 11 января 2011

Под «очисткой» вы подразумеваете «синхронизировать с диском»? (т.е. вызывая -synchronize)

Если это так, NSUserDefaults обрабатывает это автоматически, вам не о чем беспокоиться.

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