私は主に iOS 開発から来ています。
NSView のレイヤーをすべて裏打ちしたくないのはなぜですか? ある種のパフォーマンス ヒットはありますか? すべての UIView がレイヤーでサポートされている iOS との違いは何ですか?
私は主に iOS 開発から来ています。
NSView のレイヤーをすべて裏打ちしたくないのはなぜですか? ある種のパフォーマンス ヒットはありますか? すべての UIView がレイヤーでサポートされている iOS との違いは何ですか?
iOS では、グラフィック ハードウェアはタイル レンダリングに基づいています。レイヤーに基づくビュー構成は、ハードウェアがコンテンツを画面に合成する方法と非常によく似ています。
Mac OS では、ハードウェアはタイル レンダリングを使用しません。レイヤーに基づくビューを要求すると、プログラムのメモリ フットプリントが増加します。Mac OS では、画面は通常ダブル バッファリングされるため、一度に 2 つの画面のコピーが存在します。レイヤーに裏打ちされたビューもダブルバッファリングされているため(そのビットについては間違っている可能性があります)、かなり多くのメモリを使用していると思います。レイヤーに基づくビューをオンにすると、ビューのすべてのサブビューに対して再帰的に実行されます。オーバーラップするサブビューが多数あるビューがある場合、メモリ要件をかなり引き上げることができます。
わかりませんが、Mac OS では、レイヤーに裏打ちされたビューは、レイヤーに裏打ちされていないビューよりもレンダリングがわずかに遅いと思われます。レンダリングのパフォーマンスには多くの要因があるため、詳細に依存する場合があります。
ビデオメモリの使用と実際のパフォーマンスの両方について、自分でテストすることをお勧めします。Xcode とインストゥルメントの新しい OpenGL ツールを使用すると、ビデオ メモリの使用状況を追跡できます。(メインメモリとは異なります。)