2012-02-19 19 views
5

私の人生にとって、なぜこのNSTimerが火を消さないのか分かりません。ここで私はリンゴのドキュメント、および他の質問を読みましたが、私はそれを把握することはできませんNSTimerが発砲しない

- (IBAction)connectClick:(id)sender 
{ 
    if (connected) 
    { 
     NSLog(@"Disconnecting"); 
     [timer invalidate]; 
     timer = nil; 
     connected = NO; 
     [Connect setStringValue:@"Connect"]; 
     NSLog(@"Finished\n"); 
    } 
    else 
    { 
     NSLog(@"Connecting"); 
     timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; 
     //[timer fire]; tested this line. same results 
     [Connect setStringValue:@"a"]; 
     connected = YES; 
     NSLog(@"Finished\n"); 
    } 
} 

- (void)timerFireMethod:(NSTimer*)theTimer 
{ 
    NSLog(@"Fireing event"); 
    //[self resetRequest]; 
    //[spinner startAnimation:nil]; 
    //[request startAsynchronous]; 
} 

(少なくとも私には)、関連する表示されたコードのすべてです。それはtimerDireMethod:に一度も電話しません。私はこれが異なるスレッドによって引き起こされる可能性があると聞いたことがありますが、私が知る限り、私は複数のスレッドを使用していません。

すべてのアイデアを歓迎します。 Mac OS X用NSTimer documentationから

+0

[NSTimer発射ない](http://stackoverflow.com/questions/6752234/nstimer-not-firing)の可能性のある重複 – Caleb

+0

あなたはNSEventTrackingRunLoopMode代わりのNSDefaultRunLoopModeを使用しているが、何らかの理由ますか? – Caleb

+0

申し訳ありません。私はちょうどそれに気付き、それを質問に追加しようとしていました。はい、NSDefaultRunLoopModeが機能しました。あなたを混乱させて申し訳ありません。 –

答えて

9

あなたはaddTimer使用して、実行ループに新しいタイマーを追加する必要があります。forModeを:. 次に、seconds秒が経過すると、タイマーが起動し、 メッセージaSelectorがターゲットに送信されます。 (その後、実行ループにタイマーを再度追加する必要はありません 、タイマーを繰り返すように構成されている場合。)

個人的に、私は通常、あなたがこれを呼び出した場合ことに注意してください。また+[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]

を使用しますメソッドをバックグラウンドスレッドで実行するか、またはバックグラウンドキューで実行されるブロック操作では、NSTimerはバックグラウンドスレッドが処理すると破棄されます。したがって、状況に応じてメインスレッドまたはメインキューで実行していることを確認してください。

+1

+1偉大な心は似ていると思います。 ;-) – Caleb

+0

ハ、素敵なチームワーク! – bneely

+0

私はこれを使用しましたが、まだ発砲していません。 – shim

1

は、あなたが使っている方法、+timerWithTimeInterval:target:selector:userInfo:repeats:のドキュメントを読む:

あなたはaddTimer使用して、実行ループに新しいタイマーを追加する必要があります。forModeを:. 次に、seconds秒が経過すると、タイマーが起動し、 メッセージaSelectorがターゲットに送信されます。

+1

+1偉大な心は似ていると思います。 ;-) – bneely

関連する問題