代码之家  ›  专栏  ›  技术社区  ›  arachide

从内存中删除ViewController

  •  2
  • arachide  · 技术社区  · 15 年前

    我希望加载一个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];
    

    但我发现DismissModalView ControllerAnimated不会触发ViewController5的事件viewdIdUnload。

    我尝试了函数释放,但它导致了程序崩溃。 我还尝试从SuperView中删除,但它不会触发事件viewdidUnload。

    欢迎发表评论

    谢谢

    Interdev公司

    2 回复  |  直到 15 年前
        1
  •  5
  •   shosti    15 年前

    viewDidUnload 仅当应用程序收到内存警告且视图未处于活动状态时才调用。它通常用于发布保留的视图(包括iboutlets)。你可以用 viewWillDisappear viewDidDisappear 对解雇作出回应( dealloc 最终也会被调用,但不一定是在视图被忽略时)。

        2
  •  1
  •   Björn    15 年前

    解除的uiviewController不会触发viewdidUnload,正如您发现的那样。但是它会触发 viewWillDisappear 方法,如果你需要的话。