2010-04-21 94 views
2

我希望加載一個ViewController並執行一些操作,然後從內存中卸載它(viewDidUnload)。從內存中刪除ViewController

if (self.vViewController5.view.superview==nil) 
{ 

    ViewController5 *blueController = 
    [[ViewController5 alloc] initWithNibName:@"View5" bundle:nil]; 

    self.vViewController5 = blueController; 

    [self.vViewController5 setDelegate:self]; 
    [blueController release]; 
} 



[self presentModalViewController:vViewController5 animated:YES]; 

後,撥打

[self dismissModalViewControllerAnimated:YES]; 

,但我發現,dismissModalViewControllerAnimated不會觸發Viewcontroller5的事件viewDidUnload。

我嘗試函數發佈,但它導致程序崩潰。 我也嘗試removeFromSuperView,但它不會觸發事件ViewDidUnload。

歡迎任何評論

感謝

InterDev中

回答

5

viewDidUnload僅在您的應用程序收到內存警告並且視圖未處於活動狀態時纔會調用。它通常用於釋放保留的視圖(包括IBOutlets)。您可以使用viewWillDisappearviewDidDisappear來回應解僱(最終也會調用dealloc,但不一定完全在視圖被解除時)。

+0

有沒有辦法從內存卸載視圖控制器? – arachide 2010-04-21 08:15:35

+0

當你關閉一個模式視圖控制器時,它將被釋放並且通常被解除分配(除非你保留了它)。 – shosti 2010-04-21 09:27:21

1

被辭退的UIViewController不會觸發viewDidUnload,因爲你已經發現。但是,如果符合您的需求,它會觸發viewWillDisappear方法。