在iOS环境中,是否可以让当前线程休眠几秒钟,然后执行我的代码? NSTimer,GDC或任何技术对我都没问题。
答案 0 :(得分:20)
如果你分享你已经做过的事情会更好但是你在这里。
您可以选择一些选项:
选项1
// Standard Unix calls
sleep();
usleep();
可以找到有关sleep
功能的一些文档here。您会发现它们实际上是C
个函数,但由于Objective-C
是C的严格超集,我们仍然可以使用sleep
和usleep
函数。
选项2
[NSThread sleepForTimeInterval:2.000];//2 seconds
此方法的Apple documentation说明:
在给定的时间间隔内休眠线程。
<强>讨论强>
线程被阻止时,不会发生运行循环处理。
选项3
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
1 * NSEC_PER_SEC),
dispatch_get_main_queue(),
^{
// Do whatever you want here.
});
Grand Central Dispatch
路线也是一种非常好的做事方式。以下是Grand Central Dispatch的Apple文档,非常好读。
还有一个问题可能非常有用How to Wait in Objective-C
答案 1 :(得分:5)
这不容易。
sleep(seconds);
答案 2 :(得分:3)
无论
[self performSelector:@selector(YourFunctionName) withObject:(can be Self or Object from other Classes) afterDelay:(Time Of Delay)];`
或
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC),
dispatch_get_main_queue(), ^{
//your method
});
答案 3 :(得分:3)
使用类方法+ (void)sleepForTimeInterval:(NSTimeInterval)ti
变量NSTimeInterval的类型为double,表示要休眠的秒数
// Block for .5 seconds
[NSThread sleepForTimeInterval:.5];
答案 4 :(得分:1)
这取决于你如何创建(产生)你的线程。例如,如果要使用NSThread
类创建线程,则可以使用两种类方法:
sleepUntilDate:
sleepForTimeInterval:
但通常自己处理线程管理是一个坏主意,因为多线程编程非常困难。例如,您可以使用GCD或操作队列来处理应用程序中的多线程。