0

我有一个 iPad 应用程序,用户可以通过偏好设置将 idleTimerDisabled 设置为 YES 或 NO。那部分工作正常。但是,如果应用程序第一次运行不起作用(设备自动休眠),则最初在应用程序委托的 didFinishLaunchingWithOptions 方法中将其设置为 YES。

我已经尝试过先将其设置为 NO,然后设置为 YES,如其他线程中所述,但无济于事。首选项(standardUserDefaults)的所有其他方面也可以正常工作。

以下是相关代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // if app run for the first time, set these as defaults
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    if (![prefs objectForKey:@"autoSleep"]) {
    // this conditional code runs, as traced using NSLog   
    [prefs setBool:YES forKey:@"autoSleep"];
    application.idleTimerDisabled = NO;
    application.idleTimerDisabled = YES;
    }
}
4

1 回答 1

1

如果 objectForKey 为 nil,请使用registerDefaults方法NSUserDefaults代替测试。

另请参阅相关编程指南中有关此内容的详细信息。一旦您使用 registerDefaults 注册了默认值(在您的情况下NO为您的"autoSleep"键的值),您将确保您将在此键中拥有一个值,或者是用户在应用程序设置中设置的一个值……或者这个默认值,如果用户尚未为其设置值。

因此,它应该可以解决您的问题,因为您的autoSleep密钥始终有一个值,无论是默认值还是用户提供的值。

于 2011-09-08T23:53:06.340 回答