【发布时间】:2011-12-03 03:29:54
【问题描述】:
我添加了这段代码,它在我的应用程序中用作自动超时。 userDefaults doubleForKey:@"timeoutLength" 应该以分钟为单位。例如,如果值为 500,则应表示 500 分钟。
我似乎一直在进入 timout 循环,即使它实际上还没有超过 500 分钟。我的代码有什么问题吗?可能是分钟/秒错误等。
[userDefaults setDouble:[[userContextDictionary valueForKey:@"autologout_idle_timeout"] doubleValue] forKey:@"timeoutLength"];
double timeDifference = ([[NSDate date] timeIntervalSince1970] - [userDefaults doubleForKey:@"Close Time"]) / 60;
if (timeDifference > [userDefaults doubleForKey:@"timeoutLength"]) {
NSLog(@"Timeout Hit");
} else {
NSLog(@"No Timeout");
}
编辑:
- (void)applicationDidEnterBackground:(UIApplication *)application {
[userDefaults setObject:[NSDate date] forKey:@"Close Time"];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[userDefaults setDouble:[[userContextDictionary valueForKey:@"autologout_idle_timeout"] doubleValue] forKey:@"timeoutLength"];
//This is an int like 500, or 600, etc.
NSDate *closeDate = [userDefaults objectForKey:@"Close Time"]
NSTimeInterval timeWhenClosedTimeInterval = [closeDate timeIntervalSince1970];
NSTimeInterval todayTimeInterval = [[NSDate date] timeIntervalSince1970];
NSTimeInterval timeDifference = ((todayTimeInterval - timeWhenClosedTimeInterval ) / 60);
if (timeDifference > [userDefaults doubleForKey:@"timeoutLength"]) {
NSLog(@"Timeout Hit");
} else {
NSLog(@"No Timeout");
}
return YES;
}
【问题讨论】:
标签: objective-c ios cocoa-touch timeout