我的应用程序中有这样的方法:
- (void)initializeTimer{
self.myTimer = [NSTimer scheduledTimerWithTimeInterval:theInterval target:self
selector:@selector(move:) userInfo:nil repeats:YES];
}我注意到,如果我改变时间间隔,计时器仍然使用旧值。
发布于 2011-03-19 22:41:40
一旦创建了计时器,您就无法更改时间间隔。看看苹果网站上的NSTimer文档。您必须使计时器无效并释放计时器,然后使用新的时间间隔创建一个新计时器。
发布于 2011-03-20 07:17:45
我注意到,如果我改变时间间隔,计时器仍然使用旧值。
这是因为在C中调用函数和在Objective-C中发送消息是按值传递的,而不是按名称传递的。您不会传递theInterval变量;而是传递当时该变量中的值。该方法只接收该值;它不知道您可能从何处传递了该值。在theInterval变量或任何其他存储中放置一个不同的值对计时器没有任何影响,因为计时器不知道或不关心该变量或其外部的任何其他内容。
更改计时器时间间隔的唯一方法是向它发送一条setTimeInterval:消息,正如Marc W在他的回答中所说的那样,NSTimer对象不会响应这样的消息。因此,无法更改现有计时器的时间间隔。
https://stackoverflow.com/questions/5362729
复制相似问题