2011-09-03 11 views
10

私のiOSプログラムでは、1秒間機能を停止させたい。これを行うにはどのようなコードを書く必要がありますか?iOSプログラミングの時間を一時停止する方法

+8

なぜあなたは1秒間何故一時停止したいのかを知らずにこれを正しく答えるのは難しいです。あなたが慎重でない限り、あなたは非常に悪いユーザエクスペリエンスである1秒間UIをブロックするだけです。 – Abizern

答えて

24

あなたはこれらのいずれかを使用できます。sleep(1);またはwait(1);

それとも[NSThread sleepForTimeInterval:1.0]

を使用し、また、iOS版にperformSelector:withObject:afterDelay

+3

または残りのタスクをブロックに入れ、 'dispatch_after'でスケジューリングしてください;) – Abizern

+3

睡眠はほとんど確実に良い考えではありません。 Twinkleが 'sleep 'の使い方を知らないと、私はeがバックグラウンドスレッドを使用しているのではないかと疑います。これは、UIスレッドを一時停止することを意味します。 –

+1

私はバックグラウンドスレッドを一時停止しようとしています。 – Twinkle

2

新しいそこにあることができ、完了ブロックです。たとえば、View Controllerがポップされた後で何らかのアクションを実行する必要がある場合は、ブロックを使用できます。私は最近、このメソッドを使用して、メッセージを作成するView Controllerを終了し、成功した場合は現在のView Controllerをポップします。

古い方法:

[controller dismissModalViewControllerAnimated:YES]; 
// Use an NSThread or performSelector:withObject:afterDelay 

新しい方法:

[controller dismissViewControllerAnimated:YES completion:^{ 
    if (result != MessageComposeResultCancelled){ 
    // If cancelled remain on current screen, else pop to parent view controller 
    [self.navigationController popViewControllerAnimated:YES]; 
    } 
}]; 
3

これを行うための別の方法は次のとおりです。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//Place code here}); 

睡眠()と(待つ)しています時折見下ろされたが、あなたは何が起きているのかをあなたの自由意思で理解してください。

関連する問題