アプリに がありview controller
、views
そのフレームが のフレームに相対的であるとしview controller
ます。self.view.frame.size.height/width
変数に値を格納して代わりに使用するよりも、を使用する利点/欠点はありますか?? メモリ使用量、CPU 使用量、時間遅延などに関する長所と短所。そして、その核心ではheight
、 、width
、または関連するパラメータのこれらの値は、メモリのどこかに保存されていますか、それともコードが要求するたびに取得/計算されていますか??
3 に答える
値を変数に格納し、それを使用することをお勧めします。
呼び出すself.view.frame.size.height
とその都度計算されます。それらはパフォーマンスに影響します。
やっている:
int counter = self.view.frame.size.width;
for(int loop=0;loop<counter;loop++)
{
}
よりも良い:
for(int loop=0;loop<self.view.frame.size.width;loop++)
{
}
特定のシナリオで、幅と高さが動的に変化し (アニメーション ロジック)、値に基づいて何かを行う必要がある場合は、使用self.view.frame.size.width
することをお勧めします。
利点:
ビューのサイズが変更されると、幅と高さの変数はサイズ変更された値で自動的に更新されます。幅と高さのローカル変数を格納すると、ビューのサイズ変更を引き起こす可能性のある各イベントで両方の更新を管理するための不要なコードを作成することになります。
ローカル変数を使用すると、重複がメモリ内で増加します。メモリの浪費の大きさは無視できますが、重複した変数を保持するために使用される余分なメモリがあることは常に事実です。
短所:
- view.frame.size.height 自体から幅と高さを参照すると、初期値が失われる可能性があります。
self.view.frame.size.height = 1
多くの人が期待するほどうまくいかないことを指摘したいだけです。と同じですCGRect temp = self.view.frame; temp.size.height = 1;
そのため、常に setter/getter 呼び出しと構造体アクセサーを別の行に分けてください。すなわち
CGRect frame = self.view.frame; // use objc dot syntax to get frame
frame.size.height = 100; // use C struct accessors
self.view.frame = frame; // use dot syntax to set frame