我可以在延迟后执行一个类方法吗?

时间:2013-07-18 06:20:29

标签: objective-c

我在一个类方法中,我希望在延迟之后从同一个类触发另一个类方法。似乎没有我可以使用

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

还有其他选择吗?

编辑:

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

2 个答案:

答案 0 :(得分:4)

您使用-class获取对该类的实际引用,然后将其发送为:

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

答案 1 :(得分:1)

您也可以使用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];
});