iOS-控制器的生命周期

就像我们学习其他平台语言一样,例如:ASP.NET 每一个页面都会经历一个从创建到销毁的一个过程。

同理:IOS程序的每一个控制器也要经历从有到无的过程。我们称为生命周期。那么IOS的控制器的生命周期需要经历那些过程呢,下面看代码

// 当控制器的view加载完毕就调用
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"One -  viewDidLoad");
}

// 控制器的view即将显示的时候调用
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];
    NSLog(@"One -  viewWillAppear");
}

// 控制器的view完全显示的时候调用
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSLog(@"One -  viewDidAppear");
}

// 控制器的view即将消失的时候调用
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    NSLog(@"One -  viewWillDisappear");
}
// 控制器的view完全消失的时候调用
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    NSLog(@"One -  viewDidDisappear");
}

知道了控制器声明周期,我们就可以在控制器的各个阶段,做一些相对应的工作。这些,需要具体到开发项目的需求上。

另外还补充两个已经过时的方法:

// 控制器的view即将销毁的时候调用
- (void)viewWillUnload
{
    [super viewWillUnload];
}
// 控制器的view完全销毁的时候调用
- (void)viewDidUnload
{
    [super viewDidUnload];
    // 清空不需要的属性
//    [self.foods release];
    self.foods = nil;
}

解释这两个方法之前,我再介绍一个方法:内存警告

// 接收到内存警告的时候调用
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

请看图解:

解释:当程序发出一个内存警告--->

   系统询问控制器有View吗--->如果有View

   系统询问这个View能够销毁吗---->通过判断View是否在Windown上面,如果不在,就表示可以销毁

   如果可以销毁,就执行viewWillUnLoad()----->对你的View进行一次release,此时View就为nil

     然后调用viewDidUnLoad()----->一般还会在这个方法里将一些不需要属性清空

posted @ 2014-05-11 07:34  W.Sir  阅读(429)  评论(0编辑  收藏  举报