在iOS环境下,是否可以让当前线程休眠几秒钟,然后执行我的代码?对我来说,NSTimer、GDC或任何技术都可以。
如果你分享一下你所做的事情,会更好。但是既然你要求了,在这里就给你。
以下是几个选项:
选项1
// Standard Unix calls
sleep();
usleep();
有关 sleep
函数的一些文档可以在这里找到。你会发现它们实际上是C
函数,但由于Objective-C
是C的严格超集,因此我们仍然可以使用sleep
和usleep
函数。
选项2
[NSThread sleepForTimeInterval:2.000];//2 seconds
这个方法的苹果文档说明:
使线程休眠一段给定的时间间隔。
讨论
当线程被阻塞时,不会发生任何运行循环处理。
选项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 的文档,非常值得一读。
还有一个问题可能会很有用: 如何在 Objective-C 中等待
这真的再简单不过了。
sleep(seconds);
+ (void)sleepForTimeInterval:(NSTimeInterval)ti
。// Block for .5 seconds
[NSThread sleepForTimeInterval:.5];
无论是
[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
});
NSThread
类来创建你的线程,你可以使用两个类方法:sleepUntilDate:
sleepForTimeInterval:
通常情况下,自己处理线程管理是一个不好的想法,因为多线程编程非常困难。你可以使用 GCD 或操作队列来处理应用程序中的多线程。
sleep(2);
或[NSThread sleepForTimeInterval:2000]
这样简单的东西吗? - Popeye