从内存中删除ViewController

时间:2010-04-21 06:00:08

标签: iphone objective-c

我希望加载一个ViewController并做一些事情,然后从内存中卸载它(viewDidUnload)。

 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中

2 个答案:

答案 0 :(得分:5)

viewDidUnload仅在应用程序收到内存警告时调用,并且视图未处于活动状态。它通常用于释放保留的视图(包括IBOutlets)。您可以使用viewWillDisappearviewDidDisappear来回复解雇(dealloc最终也会被调用,但不一定完全取消视图)。

答案 1 :(得分:1)

如您所发现的,被解雇的UIViewController不会触发viewDidUnload。但是,如果符合您的需要,它将触发viewWillDisappear方法。