ボタンの写真を変更しようとしています。しばらく待ってから、元に戻してください。それを機能させるのにあまり運がないので、タイマーが実際に何かを実行することなく、プログラムがコードを実行せずに、プログラムを1秒間一時停止する方法はありますか?
2 に答える
4
変更をメソッドに戻し、変更メソッドから呼び出してみてください。
[self performSelector:@selector(changeBack:) withObject:nil afterDelay:1.0];
于 2010-05-19T10:44:42.797 に答える
1
あなたは呼び出すことができます
// sleep first appeared in Version 7 UNIX, 1979
sleep(1);
または、より現代的に:
// usleep appeared in 4.3 BSD, released 1986
usleep(1000000);
または、もっと控えめに:
// nanosleep can be found in POSIX.1b, published 1993
struct timespec ts;
ts.tv_sec = 1;
nanosleep(&ts, NULL);
または、より現代的でよりCocoa-y:
// +sleepForTimeInterval first appeared in Mac OS X 10.5, 2007
[NSThread sleepForTimeInterval:1.0];
これらはすべて、現在のスレッドを停止します。アプリケーションにスレッドが1つしかない場合、これはアプリケーション全体を停止することを意味します。スリープ中は、ユーザーインターフェイスイベントに応答しなくなります。
NSObjectリファレンスは、 performSelector:withObject:afterDelay:というメソッドを示しています。このメソッドは、実行ループでセレクターをスケジュールすることにより、指定された遅延の後にセレクターを実行します。これは、実行ループがループを続け、イベントの処理、タイマーの起動、自動解放プールのドレイン、さらにスケジュールされたメッセージの送信などを行うことを意味します。
この特定のケースでは、実行ループでセレクターをスケジュールすることをお勧めします(イメージを元に戻し、1秒の遅延を提供するセレクターを提供します)。
于 2010-05-19T12:04:39.080 に答える