2013-08-07 46 views
1

假設,一個應用的view controller裏面有很多views,它們的幀是相對於view controller的幀。 使用self.view.frame.size.height/width是否存在任何優勢/劣勢,而不是將它們的值存儲在變量中,並用它們代替?在內存使用,CPU使用率,延時等方面的優勢/劣勢。 而在它的核心,這些值是height,width或相關參數存儲在某處的內存中,還是每次代碼請求它們時都會提取/計算它們?使用'self.view.frame.size.height',而不是將其存儲在變量中的優勢?

回答

1

我建議將值存儲在變量中,並使用它會更好。

如果您致電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將是一件好事。

0

優點:

  1. 當視圖調整大小,寬度和高度可變自動獲取與調整大小後的值來更新。保存寬度和高度的局部變量都會讓你寫unncecessary代碼管理上造成調整視圖中的每個可能的事件兩者的更新用。

  2. 使用本地變量時,內存中的副本會增加。儘管內存浪費的大小可以忽略不計,但用於保存重複變量的額外內存始終是一個事實。

缺點:

  1. 如果參考從view.frame.size.height本身的寬度和高度,則可能會失去的初始值。
0

我只想指出,self.view.frame.size.height = 1不會像預期的那樣工作。它是同CGRect temp = self.view.frame; temp.size.height = 1;

所以總是分開的setter /吸氣通話和結構在不同的行存取。即

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 
相關問題