iPhone устанавливает NSUserDefaults на ноль, когда приложение закрыто или в фоновом режиме - PullRequest
0 голосов
/ 04 сентября 2010

Я хочу исключить все переменные, сохраненные во всех полях NSUserDefaults, когда приложение закрывается или работает в фоновом режиме в течение определенного времени - скажем, 5 минут.

Я пытался добавить строкуделегату приложения applicationDidFinishLaunching, который выглядит следующим образом:

if (UIApplicationStateBackground == TRUE) {
    NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];
}

Я также добавил только эту часть в applicationWillTerminate:

NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];

Кажется, ничего из этого не работает, и у меня нетидея, как установить условие: «если 5 минут превысили время, когда приложение находится в фоновом режиме, удалить переменные NSUserDefaults» - любая помощь?

Ответы [ 3 ]

8 голосов
/ 04 сентября 2010

Я бы порекомендовал удалить объект вместо того, чтобы установить его на ноль.

- (void)removeObjectForKey:(NSString *)defaultName;

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

Надеюсь, это поможет.

0 голосов
/ 04 сентября 2010

Я бы сделал следующее: при вызове делегата - (void)applicationWillResignActive:(UIApplication *)application UIApplication я сохранил бы метку времени, когда приложение перешло в фоновый режим.В этом случае вам не нужно проверять, идет ли приложение в фоновый режим или оно было прервано, например, посредством SMS, но пользователь нажал «Отмена» и продолжает использовать ваше приложение.

Когда приложение запускается снова, внедритекод в другом методе делегата UIApplication - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions, чтобы определить, как долго вы были неактивны, и стереть UserDefaults или нет, в зависимости от продолжительности.

Для получения дополнительной информации о том, что приложение становится неактивным и перезапускается, проверьте этот документ документации Applehttp://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html#//apple_ref/doc/uid/TP40007072-CH3-SW10

0 голосов
/ 04 сентября 2010

Возможно, вам следует использовать applicationDidEnterBackground :. Проверьте эту страницу Apple Doc.

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