3

ボタンの写真を変更しようとしています。しばらく待ってから、元に戻してください。それを機能させるのにあまり運がないので、タイマーが実際に何かを実行することなく、プログラムがコードを実行せずに、プログラムを1秒間一時停止する方法はありますか?

4

2 に答える 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 に答える