0

我想要什么
1)UIImageViews 中的 4 个拼图图像,我可以四处移动 2)在解决拼图后我想显示 2 张图像而不是拼图:第一个是在拼图解决后,第二个是在第一个图像后 2 秒...

我所拥有的:
1)如果你一个接一个地快速解决一个难题,你可能会陷入 NSTimer 间隔,这会使这两个图像交换得太快,比如在 0.1 秒而不是 2.0 秒之后

有什么办法可以解决 NSTimer,不干扰已经被解雇的人吗?

解决方案(?):我正在考虑阻止交互,因此会出现第二张图像,但这似乎是一个糟糕的解决方法。

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 回答