5

今月初めに、「ランループとは何ですか?」という質問をしました。答えを読んでいくつか試してみたところ、うまくいきましたが、まだ完全には理解できていません。ランループがスレッドに関連付けられた単なるループであり、舞台裏で別のスレッドを生成しない場合、スレッド内の他のコード(メインスレッドをシンプルに保つため)を「ブロック」/実行しないで実行するにはどうすればよいですか?どこかで無限ループするから?

それが1番の質問でした。次に、2番目に進みます。

これで作業した後、これについて何か正しいことがわかったが、完全には理解していない場合、ランループは「フラグ」をアタッチするループであり、フラグがあるポイントに来ると「停止」することをランループに通知し、その時点でアタッチされているハンドラーを実行しますか? その後、キューの次へと実行を続けます。

ランループ

したがって、この場合、イベントは接続の que に配置されませんが、イベントになると、タップ 1 に関連付けられたアクションを実行し、接続に再び実行される前に実行します。それとも、概念を理解することができる限りですか?

4

2 に答える 2

1

時間がかかりすぎるメソッドや永久にループするメソッドをディスパッチすると、実行ループがブロックされます。

これが、iPhone アプリが、UI 実行ループの 1 つの「ティック」に収まらないすべてのことを実行し (たとえば、アニメーション フレーム レートまたは UI 応答レートで)、他のイベント ハンドラーのために余裕を持って実行する必要がある理由です。実行のために別のスレッドにディスパッチされたときに、非同期に分割された同じ「ティック」で実行する必要があります。

そうしないと、制御が実行ループに戻るまでブロックされます。

于 2011-02-18T20:30:45.433 に答える
1

「ちょっと」

この特定のドキュメントを読みましたか?

実行ループのアーキテクチャと操作について、かなりの深さ (非常に徹底的な深さ) にまで踏み込んでいます。

于 2011-02-18T17:55:35.180 に答える