iPhone开发 - NSTimer准确的时间而不是重新计算?

时间:2009-10-02 02:16:18

标签: iphone optimization count nstimer

我有一个小项目是一个计时器倒计时到午夜,我想知道我是否应该保持原样,计算每秒午夜的时间(在每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秒的时间,但如果结果与其他方式相同,则没有理由不优化..所以无论如何,我应该这样做吗?为什么?

感谢。

2 个答案:

答案 0 :(得分:2)

声明“没有理由不优化”是一个危险的说法。您需要原因进行优化,而不是缺乏理由!该代码是一个相当合理的小代码,不会花费太多时间来执行。

至于准确性,保持准确时间的唯一合理方法是让系统为您完成,获得“现在”时间是一种方法。把它拿到自己手中可能会导致时钟漂移成错误,可能足以引起注意,也许不会。

至于优化,分析它,看它有多快,如果它糟透了,修复它,如果没有,继续前进到更有趣的事情!

答案 1 :(得分:2)

过早优化总是 BAD ,今天不要编写一年后无法调试的代码。在您:

之前不要进行任何优化
  1. 有一份有效的申请表。
  2. 工作应用程序的实际性能不佳。
  3. 你已经完成了仪器以找到实际的颈部。
  4. 您确定使用的是最佳算法。
  5. 了解如何在不牺牲代码清晰度的情况下进行优化。
  6. 完成所有这些操作后,每秒检查一次当前时间永远不会降低您的性能。很明显,你甚至没有通过要求2来应用优化。