Tag: 客观上是

当方法重新运行时,在方法中使用dispatch_after循环会导致多个同时发送

我正在创build一个简单的游戏。 我有以下代码: – (void)doStuff { double delayInSeconds = [NSNumber randomFloatBetweenLowerBound:0.8f upperBound:2.6f]; // Own category on NSNumber returns random float. dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ // // Do stuff // if ([self shouldDoMoreStuff]) { [self doStuff]; } }); } 这个方法是在viewDidLoad运行的,但是也会在玩家死亡的时候运行(按'Try Again'后)。 经过几次死亡,最终有许多迭代的方法同时运行,而不仅仅是一个。 我不太了解GCD和NSOperation等,但是我敢肯定我应该使用一些东西来控制这个 – 也许NSOperation – 所以在viewDidLoad中运行,然后当玩家死亡时,我取消操作,然后重新启动它。 正如我所说,我不太了解NSOperation所以我不知道它是否是:a)我应该使用什么和b)我应该如何使用它。 任何人都可以提供一些想法如何实现这一目标? 一如既往的感谢。