iOS5中UIViewController的新方法

2021-06-21 10:25:41 字數 2941 閱讀 1411

123

4567

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如下:

123

4567

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...