我对使用NSTimer
调用方法有疑问。所以我使用以下代码在.5秒后调用方法。
slimeDeathAnimTimer = [NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(moveSlime1) userInfo:nil repeats:NO];
moveSlime1是一种无效方法,但由于某些原因,这似乎并没有起作用。是否有一种更简单的方法来实现这一点,或者这是它的完成方式? 如果您想再看到更多代码,请询问。 谢谢:))
答案 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];
});