9

私は自分のアプリケーションに以下を実装しました。

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

これは、型sleepの引数を持つ関数unsigned intです。

Sleepメソッドは、秒を使用してスリープします。

スリープするタイミングをミリ秒単位で指定したいと思います。

利用できる最良の代替案はどれですか?

4

4 に答える 4

37

NSThread の +sleepForTimeInterval: もあります。これは秒単位で時間がかかります。例えば:

[NSThread sleepForTimeInterval:0.05];

50 ミリ秒間スリープする必要があります。

于 2009-09-23T19:33:27.340 に答える
34

2つのオプション:
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()ナノ秒かかります。ただし、これらのスリープ時間は正確ではないことに注意してください。実際には、数百分の 1 秒よりも正確に指定することができます。

于 2009-09-23T18:50:11.303 に答える