`cancelPerformSelectorsWithTarget:`vs`accountPreviousPerformRequestsWithTarget:`

时间:2012-01-13 15:35:20

标签: cocoa-touch foundation nsrunloop performselector

我正在构建一种模拟,“ticks”之间的间隔越来越小:

- (void) simulationTick {
    if (self.currentTick >= kNumberOfSimulationTicks)
        return; // recursion anchor

    // ... do stuff ...

    self.currentTick = self.currentTick + 1;
    [self performSelector:@selector(simulationTick) withObject:nil
               afterDelay:2.5 * pow(0.95,(double)self.currentTick)]; // acceleration
}

离开模拟屏幕时,我想停止模拟,所以我用

执行此操作
[NSObject cancelPreviousPerformRequestsWithTarget:self]

我首先尝试使用

[[NSRunLoop currentRunLoop] cancelPerformSelectorsWithTarget:self]

......但这不起作用。

为什么不呢?

显然有many others有同样的问题和相同的解决方案。但我无处可以找到为什么。这两者有什么区别?

0 个答案:

没有答案