我有一个小项目是一个计时器倒计时到午夜,我想知道我是否应该保持原样,计算每秒午夜的时间(在每1秒调用的NSTimer方法内) :
NSDate *now = [[NSDate alloc] init];
NSDateComponents *dateComponents = [[self gregorian] components:
(NSHourCalendarUnit |
NSMinuteCalendarUnit |
NSSecondCalendarUnit) fromDate:now];
[now release];
NSUInteger hour = 23 - [dateComponents hour];
NSUInteger min = 59 - [dateComponents minute];
NSUInteger sec = 59 - [dateComponents second];
NSString *time = [[NSString alloc] initWithFormat:@"%02d:%02d:%02d",
hour, min, sec];
[[self lblCountDown] setText:
[time stringByReplacingOccurrencesOfString:@"1" withString:@" 1"]];
[time release];
或者我应该第一次计算,然后每隔一次从每次通话同步到1秒后每隔一秒减去一秒?我并不担心这会花费超过1秒的时间,但如果结果与其他方式相同,则没有理由不优化..所以无论如何,我应该这样做吗?为什么?
感谢。
答案 0 :(得分:2)
声明“没有理由不优化”是一个危险的说法。您需要原因进行优化,而不是缺乏理由!该代码是一个相当合理的小代码,不会花费太多时间来执行。
至于准确性,保持准确时间的唯一合理方法是让系统为您完成,获得“现在”时间是一种方法。把它拿到自己手中可能会导致时钟漂移成错误,可能足以引起注意,也许不会。
至于优化,分析它,看它有多快,如果它糟透了,修复它,如果没有,继续前进到更有趣的事情!
答案 1 :(得分:2)
过早优化总是 BAD ,今天不要编写一年后无法调试的代码。在您:
之前不要进行任何优化完成所有这些操作后,每秒检查一次当前时间永远不会降低您的性能。很明显,你甚至没有通过要求2来应用优化。