延迟后我可以执行类方法吗



我在一个类方法中,我想在延迟后从同一个类触发另一个类的方法。似乎我不能使用

[MyClass performSelector:@selector(myMethod) withObject:nil afterDelay:1]

还有其他选择吗?

编辑:

我的坏。我认为这个调用在类方法中不可用,因为它不是我写的那样自动完成的。正如一些人在这里指出的,它实际上工作得很好。不知道为什么在我的情况下它没有自动完成,但我学到了在这种情况下做出假设的教训。谢谢大家。

您使用-class来获得对类的实际引用,然后像这样发送消息:

[[MyClass class] performSelector:@selector(myClassMethod) withObject:nil afterDelay:1.0];

您也可以在之后使用dispatch_after

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [MyClass myClassMethod];
});

最新更新