如何让iOS中的线程休眠几秒钟?

时间:2015-03-06 09:40:54

标签: ios objective-c multithreading

在iOS环境中,是否可以让当前线程休眠几秒钟,然后执行我的代码? NSTimer,GDC或任何技术对我都没问题。

5 个答案:

答案 0 :(得分:20)

如果你分享你已经做过的事情会更好但是你在这里。

您可以选择一些选项:

选项1

// Standard Unix calls
sleep(); 
usleep();

可以找到有关sleep功能的一些文档here。您会发现它们实际上是C个函数,但由于Objective-C是C的严格超集,我们仍然可以使用sleepusleep函数。

选项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或操作队列来处理应用程序中的多线程。