视图控制器的生命周期

创建一个视图控制器

当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序
alloc:创建对象,分配空间
init (initWithNibName) :初始化对象,初始化数据
loadView:从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图

{
    //如果我们使用自定义的视图,那么就不要调用[super loadView]
    //自定义一个视图
    UIView *customView = [[UIView alloc] initWithFrame:[UIScreen   mainScreen].bounds];
    //将自定义视图赋给当前控制器自带的view
    self.view = customView;
    NSLog(@"***%s",__func__);
}```
viewDidLoad:载入完成,可以进行自定义数据以及动态创建其他控件
```- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"***%s",__func__);
}```
viewWillAppear:视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
```- (void)viewWillAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@"***%s",__func__);
}```
viewDidAppear:视图已在屏幕上渲染完成
```- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSLog(@"***%s",__func__);
}```
#视图被移除
当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反
viewWillDisappear:视图将被从屏幕上移除之前执行
```- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    NSLog(@"***%s",__func__);
}```
viewDidDisappear: 视图已经被从屏幕上移除,用户看不到这个视图了
```- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    NSLog(@"***%s",__func__);
}```
dealloc: 视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放,此方法一般在MRC下重写。ARC下可以重写dealloc方法,但是内部不能释放内存,否则会过度释放。
```- (void)dealloc
{
    
}```

关于viewDidUnload :在发生内存警告的时候如果本视图不是当前屏幕上正在显示的视图的话, viewDidUnload将会被执行,本视图的所有子视图将被销毁,以释放内存,此时开发者需要手动对viewLoad、viewDidLoad中创建的对象释放内存。 因为当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad 再次被调用,以便再次构造视图。

你可能感兴趣的:(视图控制器的生命周期)