Iphone 秒表-NSTimer或NSDate

Iphone 秒表-NSTimer或NSDate,iphone,objective-c,ios,xcode,Iphone,Objective C,Ios,Xcode,我想实现一个每秒钟计数的计时器。我有两种想法,但我有点困惑哪一种是最好的方法。它要么使用NSTimer,要么使用NSDate,据我所知,NSTimer通常只用于激发方法,所以也许我不应该使用NSTimer,而应该使用NSDate 希望您能做一些澄清,谢谢。使用NSTimer定期更新您的UI。使用NSDate获取每次更新的准确时间。使用NSTimer定期更新UI。使用NSDate获取每次更新的精确时间。您可能需要NSTimer。它将等待一段时间,然后向指定对象触发事件。NSDate只提供一个不可变

我想实现一个每秒钟计数的计时器。我有两种想法,但我有点困惑哪一种是最好的方法。它要么使用NSTimer,要么使用NSDate,据我所知,NSTimer通常只用于激发方法,所以也许我不应该使用NSTimer,而应该使用NSDate


希望您能做一些澄清,谢谢。

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

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

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


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


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

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

您所说的“累计”是什么意思?当它“计数”时,你想做什么

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

另一方面,如果希望屏幕上有一个滴答作响的时钟,可以使用每秒触发一次的NSTimer来通知应用程序更新时钟

对于某个整型变量来说,几乎没有任何用处,因为它每秒钟都在增加,而没有人看它。

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

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

另一方面,如果希望屏幕上有一个滴答作响的时钟,可以使用每秒触发一次的NSTimer来通知应用程序更新时钟


对于某个整型变量来说几乎没有任何用处,它只是每秒递增,而没有人看它。

我会使用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,该标签以秒为单位显示运行时间。

我将使用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,该标签以秒为单位显示运行时间