2010-04-21 99 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方法。