9

我在我的应用程序中实现了以下功能。

for(i=0;!stopThroughButtons && i<totalMovements;i++){
        [NSThread detachNewThreadSelector:@selector(moveNeedle) toTarget:self withObject:nil];
        sleep(0.3);
    }

sleep是一个带有unsigned int类型参数的函数。

睡眠方法使用秒来睡眠。

我想以毫秒为单位给出睡眠时间。

有哪个最好的替代品可用?

4

4 回答 4

37

还有 NSThread 的 +sleepForTimeInterval:,它以小数秒为单位花费时间。例如:

[NSThread sleepForTimeInterval:0.05];

应该休眠 50 毫秒。

于 2009-09-23T19:33:27.340 回答
34

两个选项:
int usleep(useconds_t useconds) 将使用微秒
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)将使用纳秒

于 2009-09-23T18:53:21.057 回答
16

正如您在启动的另一个线程中所提到的,您可能不想在主线程上休眠,因为这会阻止事件传递并冻结 UI。您可能不想循环和休眠,而是要触发计时器并在计时器触发时执行您的操作。

于 2009-09-24T03:42:16.907 回答
3

您可能想要nanosleep(),这需要纳秒。但请记住,这些睡眠时间并不准确,因此您真正拥有的是比百分之几秒更准确地指定它的能力。

于 2009-09-23T18:50:11.303 回答