Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 5秒后调用一个方法。没有NSTimer_Ios_Objective C - Fatal编程技术网

Ios 5秒后调用一个方法。没有NSTimer

Ios 5秒后调用一个方法。没有NSTimer,ios,objective-c,Ios,Objective C,我想在iphone中5秒钟后调用任何方法或事件,而不使用NStimer。使用PerformSelect:withObject:afterDelay:method 或使用GCD: double delayInSeconds = 5.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispat

我想在iphone中5秒钟后调用任何方法或事件,而不使用NStimer。

使用PerformSelect:withObject:afterDelay:method

或使用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 */
});

这个问题听起来像是一个毫无意义的任务。这需要一个同样无用的答案:

sleep(5);
[self myMethodToCallAfter5Seconds];
编辑:由于人们似乎不喜欢我的答案,以下是一些想法:

OP询问了一种在延迟后发送消息的方法。他明确提出了一种不使用
NSTimer
的方法,但没有具体说明原因。由于有许多方法可以在延迟后发送消息,因此选择一种方法取决于避免使用任何特定方法的原因。不知道拒绝一个显而易见的方法的原因只有猜测

一种可能的情况是后台线程没有等待延迟的runloop。在这里,当阻塞线程不是问题时,我的建议(不是完全严肃的)甚至可以是一个合适的解决方案。在此场景中,既不能使用
NSTimer
也不能使用
performSelector:withObject:afterDelay:


我添加这个答案是为了强调一个事实,即如果不给出理由,这个问题就没有什么意义。当我的答案符合规范时,它显示了问题的无意义。

+1因为这就是我使用它的方式,因为它允许使用多个参数的复杂方法调用。如何停止调用视图中的此方法将消失?那么为什么不
int t=time(NULL);while(time(NULL)@mvds我想你是在挖苦人。然而,你的例子也会指出问题的无意义,所以,是的,为什么不呢?我不是来评判问题的(但如果你是:使用评论和投票),我来这里是为了帮助大家。我们一开始什么都不知道,只是试着看看什么有效,什么无效。调用
sleep()
有效,但在某些情况下是非常糟糕的做法(阻塞主线程)我不希望看到OP在几个星期内出现一个阻塞的主线程问题,特别是如果有合理的选择。有趣的是,代码>睡眠(5)< /C>是最短的“解决方案”,所以OP甚至可以考虑使用它,也因为GCD代码看起来对新手来说是可怕的。
sleep(5);
[self myMethodToCallAfter5Seconds];