有人知道为什么我使用以下方法时会遇到奇怪的正常运行时间吗?
NSProcessInfo *processInfo = [NSProcessInfo processInfo];
NSTimeInterval systemUptime = [processInfo systemUptime];
最开始几分钟,一切似乎都很好,但当我几个小时或几天后再次打开应用程序时,运行时间仍然是相同的:30分钟或1小时34分钟……它似乎会在随机的时刻冻结。主要发生在iPhone 4上(偶尔在模拟器或iPad上)。
这可能与我的显示方式有关:
+ (NSTimeInterval)uptime:(NSNumber **)days hours:(NSNumber **)hours mins:(NSNumber **)mins
{
NSProcessInfo *processInfo = [NSProcessInfo processInfo];
//START UPTIME///////
NSTimeInterval systemUptime = [processInfo systemUptime];
// Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];
// Create the NSDates
NSDate *date = [[NSDate alloc] initWithTimeIntervalSinceNow:(0-systemUptime)];
unsigned int unitFlags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *c = [sysCalendar components:unitFlags fromDate:date toDate:[NSDate date] options:0];
//NSString *uptimeString = [NSString stringWithFormat:@"%dd %dh %dmin", [c day],[c hour],[c minute]];
*days = [NSNumber numberWithInt:[c day]];
*hours = [NSNumber numberWithInt:[c hour]];
*mins = [NSNumber numberWithInt:[c minute]];
[date release];
//END UPTIME////////
return systemUptime;
}
后面的代码:
NSNumber *uptimeDays, *uptimeHours, *uptimeMins;
[CJGDevice uptime:&uptimeDays hours:&uptimeHours mins:&uptimeMins];
NSString *uptimeString = [NSString stringWithFormat:@"%@d %@h %@min",
[uptimeDays stringValue],
[uptimeHours stringValue],
[uptimeMins stringValue]];
编辑:经过在iPad和iPhone上记录结果3天后,我发现这个正常运行时间是错误的,时间运行得太慢了,我们等待的时间越长,就越明显它是迟到了。