繁体   English   中英

更改计时器的时间间隔

[英]Change the time interval of a Timer

这是我的问题:例如,在ViewDidLoad中10秒钟后,是否可以将scheduledTimerWithTimeInterval:2例如增加为“ 3”。 例如,从此:

[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(createNewImage) userInfo:nil repeats:YES];

对此:

[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(createNewImage) userInfo:nil repeats:YES];

谢谢你对不起我的英语我法语:/

像这样递归地重新安排计时器:

float gap = 0.50;

[NSTimer scheduledTimerWithTimeInterval:gap target:self selector:@selector(onTimer) userInfo:nil repeats:NO];

-(void) onTimer {
    gap = gap + .05;
    [NSTimer scheduledTimerWithTimeInterval:gap target:self selector:@selector(onTimer) userInfo:nil repeats:NO];
}

========

或根据更改时间间隔的值时如何更新NSTimer

使其无效:

[myTimer invalidate];

然后用新的时间创建一个新的。 您可能还必须先将其设置为nil。

myTimer = nil;
myTimer = [NSTimer scheduledTimerWithTimeInterval:mySlider.value 
                                           target:self 
                                         selector:@selector(myMethod) 
                                         userInfo:nil 
                                          repeats:YES];

使用setFireDate:重新安排计时器。 您需要在ivar中跟踪计时器。 例如:

@property (nonatomic, readwrite, retain) NSTimer *timer;

@synthesize timer=timer_;

- (void)setTimer:(NSTimer *)aTimer {
  if (timer_ != aTimer) {
    [aTimer retain];
    [timer_ invalidate];
    [timer_ release];
    timer_ = aTimer;
  }

- (void)dealloc {
  [timer_ invalidate];
  [timer_ release];
}

...

self.timer = [NSTimer scheduledTimerWithTimeInterval:...];

...

self.timer.fireDate = [NSDate dateWithTimeIntervalSinceNow:3]; // reschedule for 3 seconds from now

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM