【问题标题】:Stopwatch - NSTimer or NSDate秒表 - NSTimer 或 NSDate
【发布时间】:2012-07-07 13:14:14
【问题描述】:

我想实现一个每秒计数的计时器。我有两种方法,但有点困惑哪一种是最佳方法。它使用 NSTimer 或 NSDate,据我了解,NSTimer 通常只用于触发方法,所以也许我不应该使用 NSTimer 而使用 NSDate?

我们将不胜感激,谢谢。

【问题讨论】:

    标签: iphone objective-c ios xcode


    【解决方案1】:

    NSDate 是一个模型类。除了代表某个日期和时间之外,它不会触发或执行任何操作。您必须同时使用(NSTimerNSDate)作为秒表。当您启动手表时,将当前日期保存在 NSDate 实例中,并以 1 秒的间隔(或者如果您想显示毫秒,则更长)启动一个 NSTimer。每次计时器触发时,您都会计算当前日期和保存日期之间的差值并将其显示给用户。

    【讨论】:

      【解决方案2】:

      使用 NSTimer 定期更新您的 UI。使用 NSDate 获取每次更新的准确时间。

      【讨论】:

        【解决方案3】:

        您可能需要 NSTimer。它将等待一段时间,然后向指定对象触发事件。 NSDate 只是给你一个不可变的时间点。请检查文档。谢谢!

        https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nstimer_Class/Reference/NSTimer.html

        https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsdate_Class/Reference/Reference.html

        【讨论】:

          【解决方案4】:

          “计数”是什么意思?当它“计数”时你想做什么?

          基本上,您始终可以使用 NSDate 来存储“开始日期”,然后只要您愿意,就可以得到“现在”和存储日期之间的差异。

          另一方面,如果您想在屏幕上显示时钟,您可以使用每秒触发一次的 NSTimer 来告诉您的应用程序更新时钟。

          对于某个地方的某个整数变量几乎没有用例,它只是每秒增加而没有人看到它。

          【讨论】:

            【解决方案5】:

            我会使用 NSTimer。您可以使用

            启动计时器
            [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateSeconds)userInfo:nil repeats:YES];
            

            在您的 updateSeconds 方法中:

            (void)updateSeconds
            {
                int seconds = [self.secondsLabel.text intValue];
                seconds = seconds + 1;
                self.secondsLabel.text = [NSString stringWithFormat:@"%d",seconds];
            }
            

            请注意,secondsLabel 是一个连接到标签的 IBOutlet,它以秒为单位显示经过的时间。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-02-14
              相关资源
              最近更新 更多