增加NSTimer

时间:2011-03-19 14:34:41

标签: objective-c cocoa nstimer

我的应用程序中有这个方法:

- (void)initializeTimer{
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:theInterval target:self 
                               selector:@selector(move:) userInfo:nil repeats:YES];
}

我注意到如果我更改时间间隔,计时器仍然是旧值。

2 个答案:

答案 0 :(得分:3)

创建计时器后,您无法更改间隔。查看Apple网站上的NSTimer文档。您必须使计时器无效并释放,然后使用新的间隔创建一个新计时器。

答案 1 :(得分:3)

  

我注意到如果我更改时间间隔,计时器仍然是旧值。

这是因为在C中调用函数并在Objective-C中发送消息是按值传递,而不是按名称传递。您没有传递theInterval变量;您传递当时该变量中的值。该方法仅接收该值;它不知道你可能从哪里通过它。在theInterval变量或任何其他存储中添加不同的值对计时器没有影响,因为计时器不知道或关心该变量或其他任何外部的其他内容。

您能够更改计时器间隔的唯一方法是向其发送setTimeInterval:消息,正如Marc W在他的回答中所说,并且当文档将备份时,NSTimer对象不会响应这样的消息。因此,无法更改现有计时器的间隔。