我的iOS應用是導航爲基礎的結構如下:集零到viewDidUnload子視圖控制器
@interface ViewControllerA : UIViewController
@property (strong,nonatomic) ViewControllerB *viewControllerB;
@property (strong,nonatomic) ViewControllerC *viewControllerC;
...
viewControllerB
和viewControllerC
實例化之前ViewControllerA
的navigationController
促使他們。
在我的理解中,ViewControllerA
中保留的所有內容都應設置爲零,位於ViewControllerA
的viewDidUnload
。 我應該對子視圖控制器執行相同的操作嗎?就像這樣:
-(void)viewDidUnload
{
self.viewControllerB=nil;
self.viewControllerC=nil;
}
,我發現一個問題,當有「收到內存警告」,從viewControllerC
啓動。 之後,調用父視圖控制器的viewDidUnload
(即viewControllerA
),從而將nil設置爲'viewControllerB'。意外的是,viewControllerB的viewDidUnload也被調用。因此,如果我將零件設置爲viewControllerB
的子視圖(在viewControllerB
的viewDidUnload
),我得到了「發送給釋放對象的消息」。
這是否意味着我不應該將nil設置爲子視圖控制器? 這種情況下內存管理的最佳做法是什麼?
P.S.我使用ARC。