2012-03-11 9 views
1

NSTimerでメソッドを呼び出す方法について質問があります。だから私は0.5秒後にメソッドを呼び出すために次のコードを使用しています。NSTimerを使用した呼び出しメソッド

 slimeDeathAnimTimer = [NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(moveSlime1) userInfo:nil repeats:NO]; 

moveSlime1はvoidメソッドであるが、いくつかの理由で、これはそこにこれを達成する簡単な方法working.Isではないようですか、これは、それが行うの方法ですか? これ以上コードを表示したい場合は、尋ねてください。時々、彼らはあなたのタイマーをスケジュールします、

slimeDeathAnimTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(moveSlime1) userInfo:nil repeats:NO]; 

しかし、便利なメソッドのscheduledTimer..ラインに注意してください: 感謝:)

+0

。あなたはタイマーでリリースを呼んでいますか?セレクタ関数のシグネチャは何ですか?あなたが呼び出すクラスのメンバーですか? – Tetrad

答えて

2

あなたが代わりに使用すると、便利なメソッドを使用することができ、NSRunLoopNSTimerのスケジュールを設定する必要があります誤ったモードのためのrunloopで。 See my answer here for a solution to that.

あなたはそうのように、GCDを使用することがよりストレートforewardかもしれない繰り返しタイマーを使用していないので、私はそれが有効になります覚えているから

double delayInSeconds = 0.5; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [self moveSlime1]; 
}); 
関連する問題