這些新增的方法和屬性用於改進咱們的編程方式。那麼讓咱們先看看之前的對於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方法。spa
另外,當收到系統的Memory Warning的時候,系統也會自動把當前沒有顯示的subview unload掉,以節省內存。orm