NSTimer只运行一次

时间:2013-02-14 09:49:51

标签: nstimer

我为我的应用程序创建了计时器,但计时器只运行一次,然后停止。

以下是我的代码:

moveobjecttimer= [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(moveObject) userInfo:nil repeats:YES];

重复设置为YES,但计时器仅运行一次。

我的问题是:如何在不停止的情况下创建在连续循环中运行的计时器?

谢谢和问候

2 个答案:

答案 0 :(得分:0)

也许你的代码是在一个单独的NSThread中执行的?在这种情况下,计时器被添加到该线程的运行循环中。如果线程随后终止,则在计时器第二次触发之前,计时器仅触发一次。

答案 1 :(得分:0)

我添加了额外的代码,在runloop和主线程上添加了计时器。还添加了记录和相应的日志,计时器在所有时间都处于活动状态。

下面是代码:NSRunLoop * runloop = [NSRunLoop currentRunLoop];         self.moveobjecttimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(moveObject)userInfo:nil repeats:YES];

    [runloop addTimer:moveobjecttimer forMode:NSRunLoopCommonModes];
    [runloop addTimer:moveobjecttimer forMode:UITrackingRunLoopMode];
    [self performSelectorOnMainThread:@selector(moveobjecttimer) withObject:nil waitUntilDone:NO];

    BOOL timerstate = [moveobjecttimer isValid];
    NSLog(@"Timer validity is: %@",timerstate?@"YES":@"NO");

动画仅再次显示。