1234567
8
// 方法
addchildviewcontroller:
removefromparentviewcontroller:
transitionfromviewcontroller:toviewcontroller:duration:options:animations:completion:
willmovetoparentviewcontroller:
didmovetoparentviewcontroller:
// 屬性
@property
(nonatomic
,readonly
)nsarray
*childviewcontrollers
這些新增的方法和屬性用於改進我們的程式設計方式。那麼讓我們先看看以前的對於uiviewcontroller的使用有什麼潛在的問題,認清問題,我們才能理解蘋果改變的意義。
在以前,乙個uiviewcontroller的view可能有很多小的子view。這些子view很多時候被蓋在最後,我們在最外層viewcontroller的viewdidload方法中,用addsubview增加了大量的子view。這些子view大多數不會一直處於介面上,只是在某些情況下才會出現,例如登陸失敗的提示view,上傳附件成功的提示view,網路失敗的提示view等。但是雖然這些view很少出現,但是我們卻常常一直把它們放在記憶體中。另外,當收到記憶體警告時,我們只能自己手工把這些view從super view中去掉。
蘋果新的api增加了addchildviewcontroller方法,並且希望我們在使用addsubview時,同時呼叫[self addchildviewcontroller:child]方法將sub view對應的viewcontroller也加到當前viewcontroller的管理中。對於那些當前暫時不需要顯示的subview,只通過addchildviewcontroller把subviewcontroller加進去。需要顯示時再呼叫transitionfromviewcontroller:toviewcontroller:duration:options:animations:completion方法。
另外,當收到系統的memory warning的時候,系統也會自動把當前沒有顯示的subview unload掉,以節省記憶體。
關於這個,這兒有一篇不錯的文章介紹了一段sample**用於演示新api的使用.
可以看到,這些view在沒有使用時,是不會被load的,並且當有memory warning時,當前沒有顯示的view自動被unload掉了。所以新的方法確實能有效地節省記憶體,也能方便地處理記憶體不足時的資源**。執行log如下:
1234567
891011
1213
1415
1617
1819
2021
[
7397
:f803]-
[firstviewcontroller
willmovetoparentviewcontroller:][
7397
:f803]-
[secondviewcontroller
willmovetoparentviewcontroller:][
7397
:f803]-
[thirdviewcontroller
willmovetoparentviewcontroller:][
7397
:f803]-
[thirdviewcontroller
viewdidload][
7397
:f803]-
[thirdviewcontroller][
7397
:f803]-
[thirdviewcontroller][
7397
:f803
]生日提醒
[7397
:f803]-
[secondviewcontroller
viewdidload][
7397
:f803]-
[thirdviewcontroller][
7397
:f803]-
[secondviewcontroller][
7397
:f803]-
[secondviewcontroller][
7397
:f803]-
[thirdviewcontroller][
7397
:f803][
7397
:f803]-
[firstviewcontroller
viewdidload][
7397
:f803]-
[secondviewcontroller][
7397
:f803]-
[firstviewcontroller][
7397
:f803]-
[firstviewcontroller][
7397
:f803]-
[secondviewcontroller][
7397
:f803
]received
memory
warning.[
7397
:f803]-
[secondviewcontroller
viewdidunload][
7397
:f803]-
[thirdviewcontroller
viewdidunload
]
posted by 唐巧
feb 6th, 2012 ios
在IOS5中新增相對布局
現有需求如下 文字內容靠左對齊,後面緊跟一張,效果如下 文字的寬度是固定的,但文字的內容的長度是不固定的,後面的星星沒有緊靠文字 實際執行出來的效果是這樣的 安卓系統下有android layout torightof 所以就自定義了個分類 uiview relativelayout import ...
IOS5程式設計 1 前言
2008年7月11日,蘋果公司推出199美金的3g版的iphone,iphone真正的開始在全球流行起來了。在隨後的5個月不到的時間,蘋果在全球賣出了1000萬部iphone。iphone之所以領先於競爭對手,既不是因為高速網路,也不是因為價位。蘋果的核心理念在於軟體,而iphone那流暢的觸控螢幕...
iOS5程式設計 main函式研究
xcode4.2之前的main函式如下 int main int argc,char argv xcode4.2工程中的主函式為 int main int argc,char argv 可以看出乙個重要的變化是在4.2使用了arc技術後,nsautoreleasepool被廢棄,改用 autorel...