使用NSTimer调用方法

时间:2012-03-11 16:55:41

标签: objective-c timer

我对使用NSTimer调用方法有疑问。所以我使用以下代码在.5秒后调用方法。

     slimeDeathAnimTimer = [NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(moveSlime1) userInfo:nil repeats:NO];

moveSlime1是一种无效方法,但由于某些原因,这似乎并没有起作用。是否有一种更简单的方法来实现这一点,或者这是它的完成方式? 如果您想再看到更多代码,请询问。 谢谢:))

1 个答案:

答案 0 :(得分:2)

您需要在NSTimer中安排NSRunLoop,或者您可以使用便捷方法:

slimeDeathAnimTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(moveSlime1) userInfo:nil repeats:NO];

但是要注意scheduledTimer..方便的方法,有时它们会在runloop中为错误的模式安排你的计时器。 See my answer here for a solution to that.

由于您不使用重复计时器,因此使用GCD可能更为直接,如下所示:

double delayInSeconds = 0.5;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [self moveSlime1];
});