【问题标题】:Change the time interval of a Timer更改 Timer 的时间间隔
【发布时间】:2011-11-23 00:12:06
【问题描述】:

这是我的问题: 例如,在 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];

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

【问题讨论】:

    标签: iphone xcode timer nstimer nstimeinterval


    【解决方案1】:

    使用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
    

    【讨论】:

    • 对不起,但我不太了解 hos 使用 setFireDate 或如何在 ivar 中跟踪计时器。你能解释一下吗? :)
    【解决方案2】:

    像这样递归地重新调度计时器:

    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];
    }
    

    ========

    或者根据How can I update my NSTimer as I change the value of the time interval

    使其无效:

    [myTimer invalidate];
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      相关资源
      最近更新 更多