iOS では、実行ループと表示更新の間に関係はありますか? もしそうなら、どのように?
2 に答える
Apple のiOS 向けビュー プログラミング ガイド/ ビューとウィンドウ アーキテクチャ / ビュー アーキテクチャの基礎 / ビュー描画サイクルには次のように書かれています。
ビューの内容が変更された場合、それらの変更を直接再描画しません。代わりに、
setNeedsDisplay
またはsetNeedsDisplayInRect:
メソッドを使用してビューを無効にします。これらのメソッドは、ビューの内容が変更され、次の機会に再描画する必要があることをシステムに伝えます。システムは、描画操作を開始する前に、現在の実行ループが終了するまで待機します。この遅延により、複数のビューの無効化、階層からのビューの追加または削除、ビューの非表示、ビューのサイズ変更、およびビューの再配置を一度に行うことができます。行った変更はすべて同時に反映されます。
(強調を追加しました。)
Apple は、現在の CATransaction がコミットされ、描画が行われ、アニメーションが開始されるときに、各実行ループの最後に何が起こるかを詳細に説明する非常に優れた WWDC 2012 ビデオを持っています。また、私の本の「再描画の瞬間」の技術的でない説明を読んで楽しむこともできます。
http://www.apeth.com/iOSBook/ch17.html#_drawing_animation_and_threading