我想在iphone中调用任何方法OR事件,而不使用NStimer。
答案 0 :(得分:13)
使用 performSelector:withObject:afterDelay:方法。
[self performSelector:@selector(methodName) withObject:nil afterDelay:5];
答案 1 :(得分:9)
或使用GCD:
double delayInSeconds = 5.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
/* code to be executed on the main queue after delay */
});
答案 2 :(得分:0)
这个问题听起来像是一个毫无意义的任务。这需要一个同样无用的答案:
sleep(5);
[self myMethodToCallAfter5Seconds];
编辑:由于人们似乎不喜欢我的回答,这里有一些想法:
OP要求在延迟后发送消息的方法。他没有使用NSTimer
明确要求一种方法来做到这一点,但他没有说明原因。由于有许多方法可以在延迟后发送消息,因此选择一个消息取决于避免使用任何特定方法的原因。不知道拒绝明显方法的原因只有猜测。
一种可能的情况可能是没有应该等待延迟的runloop的后台线程。在阻止线程不是问题时,我的(不是完全严重的)提议甚至可能是一个合适的解决方案。在这种情况下,既不能使用NSTimer
也不能performSelector:withObject:afterDelay:
。
我添加了这个答案,以突出这个问题没有理由而没有意义的事实。正如我的答案符合规范,它表明了问题的无意义。