2011-02-04 8 views
1

私は少し助けが必要です。 countDownは、iTunesが通知を送信したときに呼び出されます。メソッドのcountDownは、timerHitのメソッドを2回実行して値をラベルに設定します。メソッドのcountDownはtimerHitを繰り返し実行するように設定されています働くこと。Objective-CヘルプNSTimerは繰り返しません

これまで私がこれまで持っていたことは、どんな助けでも大歓迎です。

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

ありがとう、サミ。

+0

マイナスの値からではなく、その後のdoesnラベルを繰り返して更新してください。 – Sami

+0

このタイマーはメイン実行ループでスケジュールされていますか、または自分のスレッドでスケジュールされていますか?後者の場合、このスレッドにアクティブな実行ループがありますか? – NSResponder

+0

あなたのラベルなどは 'duration'ですか?ラベルを更新しようとしているコードはどこですか? – raidfive

答えて

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]]); 
関連する問題