Objective-C帮助NSTimer不重复

时间:2011-02-04 12:46:16

标签: objective-c timer nstimer

我需要一点帮助我有一个方法;当iTunes发送通知时调用countDown,方法countDown然后运行方法timerHit,它从中得到一个双减,然后将值设置为标签,方法countDown设置为重复运行timerHit,但它似乎不显示工作。

这是我到目前为止所提供的任何帮助都会非常感激。

- (void)countDown {
    [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerHit:) userInfo:nil repeats:YES];
}

- (void)timerHit:(NSTimer *)p_timer {
    iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];

    if ([iTunes isRunning]) {
        double trackDuration = [[iTunes currentTrack] duration];
        trackDuration--;
        [duration setDoubleValue:trackDuration];
    }
}

谢谢,萨米。

1 个答案:

答案 0 :(得分:2)

如果计时器在一个线程上,那么你应该在一个活动的运行循环上运行它,如下所示:

NSRunLoop *mLoop = [NSRunLoop currentRunLoop];

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerHit:) userInfo:nil repeats:YES];

mRunLoop = YES;
while (mRunLoop && [mLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]);