0

欲しいもの
1)UIImageViewsの4つのパズル画像。移動できます。2)パズルを解いた後、パズルの代わりに2つの画像を表示します。最初の画像はパズルを解いた直後、2番目の画像は最初の画像の2秒後...

私が持っているもの:
1)パズルを次々と本当に速く解いている場合、NSTimer間隔に陥る可能性があります。これにより、2.0ではなく0.1秒後のように、これら2つの画像があまりにも速くスワップされます。

すでに解雇されたものに干渉しないように、NSTimerを解決する方法はありますか?

解決策(?):インタラクションをブロックすることを考えていたので、2番目の画像が表示されますが、回避策としては不十分なようです。

4

2 に答える 2

2

このタイマーへの参照を(プロパティまたはiVarとして)保持する必要があります。

[myTimer invalidate]; myTimer = nil;その後、キャンセルしたいときに電話してください。

編集:

タイマーを参照し続けていない場合(コードブロック内でタイマーを最初から作成している場合)、複数のインスタンスを作成する危険性が常にあります...

于 2012-05-14T13:44:04.383 に答える
1

このように、setterメソッドを記述します。タイマーをキャンセルする必要があるときはいつでも

self.myTimer = nil;

- (void)setMyTimer:(NSTimer *)inTimer
{
   if (inTimer != mMyTimer)
  {
    [mMyTimer invalidate];
    [mMyTimer release];
    mMyTimer = [inTimer retain];
  }
}  

これがあなたのために働くかもしれないことを願っています。

于 2012-05-15T04:44:17.533 に答える