睡眠功能的替代方案

Sag*_*ari 9 iphone sleep

我在我的申请中实施了以下内容.

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

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

睡眠方法使用秒钟睡眠.

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

有哪种最佳替代品?

Bra*_*son 36

还有NSThread的+ sleepForTimeInterval:,它在小数秒内需要时间.例如:

[NSThread sleepForTimeInterval:0.05];
Run Code Online (Sandbox Code Playgroud)

应该睡50毫秒.


cra*_*str 33

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

  • 请参阅cdespinosa的答案如下.使用sleep()几乎总是错误的答案. (3认同)

cde*_*osa 16

正如您在其他线程中提到的那样,您可能不希望在主线程上休眠,因为这会阻止事件传递并冻结UI.您可能希望在计时器触发时触发计时器并执行操作,而不是循环和休眠.

  • +1,睡觉几乎总是错误的做法 (2认同)