CocoaでSleepのような動作を実装する場面があったので、
メモメモ。

例えば、ファイル関連で、ファイルのIOより、メソッドの実行速度が早い場合に
よく行う手ですが、実行を少し遅らせたい場合にとっても有効な手段。

  1.  
  2. //次のメソッドの実行を0.5秒遅らせる(AAAがログに表示されるのが0.5秒遅らせる)
  3. [NSThread sleepUntilDate:[[NSDate date] addTimeInterval:0.5]];
  4. NSLog(@"AAA");
  5.  

覚えておきたい書き方です。

追記–2010.08.18
上記のサンプルは、10.4までの書き方。

10.5以上なら以下の書き方

  1.  
  2. //次のメソッドの実行を0.5秒遅らせる(AAAがログに表示されるのが0.5秒遅らせる)
  3. [NSThread sleepForTimeInterval:0.5];
  4. NSLog(@"AAA");
  5.  

シンプルでいいなぁ~

SM様よりコメントいただきました。ありがとうございます。

3 Comments

  1. SM says:

    こっちのほうが良いのでは?
    [NSThread sleepForTimeInterval:0.5];

  2. superdiszo says:

    コメントありがとうございます。
    追記させていただきました

  3. hideki says:

    イメージの表示を2秒間行った後、次の処理に移りたいのですが、
    [_image drawAtPoint:CGPointMake(x, y)];
    [NSThread sleepForTimeInterval:2];
    のようにすると、2秒後にイメージが表示されます。
    イメージを2秒表示した後次の処理に移るためにはどのようにすればよいのでしょうか。

Leave a Reply