0

変数に格納されている遅延が絶えず変化するタイマーを設定したいと考えています。遅延を更新するためにタイマー内にタイマーを設定すると、まったく機能しません。ありがとう

4

4 に答える 4

1

クラスインターフェースで使用

@interface YourClass : SuperClass <Delegates> {
    NSTimer *yourTimer;
    NSInteger delay;
}

そして、タイマーを設定するときは、必ず設定してください

delay = 1.0;
yourTimer = [NSTimer scheduledTimerWithTimeInterval:delay target:self selector:@selector(methodToCall) userInfo:nil repeats:false];

そして最後にあなたのmethodToCall

-(void)methodToCall {
   // Do stuff and reset timer with delay variable

   yourTimer = [NSTimer scheduledTimerWithTimeInterval:delay target:self selector:@selector(methodToCall) userInfo:nil repeats:false];
}

これは、タイマーが新しい遅延で再び実行を開始するために実行する必要があることを意味します。そのため、より瞬時に何かをしたい場合、これはまさにあなたが求めている解決策ではないかもしれませんが、変更delayすると、タイマーが実行されたときに再び開始することを意味しますあなたの新しい遅れで

[yourTimer invalidate]これにより、ポインターなしでタイマーを繰り返し呼び出すこともできます。

それが役立つことを願っています。または、探しているソリューションを示してくれるかもしれません

于 2013-09-24T18:31:23.403 に答える
0

bandejapaisa の考えは正しいですが、メイン スレッドから新しいタイマーを作成する必要があるかもしれません。使用する:

[self performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>]

新しいタイマーを作成します。

于 2013-09-24T16:30:47.763 に答える