博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通俗易懂的讲解iphone视图控制器的生命周期
阅读量:5268 次
发布时间:2019-06-14

本文共 1924 字,大约阅读时间需要 6 分钟。

IOS 视图控制器的生命周期非常非常重要,所以我有必要写个文章来和大家一起探讨问题。

今天在学习视图控制器的生命周期,也看了一下网上的一些资料,但总觉得不是那么好理解,首先我们来看一张图:

 

先粗略讲一下: 

 

看这段源码就可以理解上面的那句话.这句话的意思就是说,如果view不存在,就会触发loadView方法 

 

这话的意思是说如果不用nib方式,就可以在子类中自定义视图树,但不要直接去调用loadview方法。 

再下一步问,是否是自定义方法Custom Method?(也可以看成是自定义视图)如果是,就调用自定义方法,如果不是,就要再进一步询问,是否是StoryBoard 如果是就从StoryBoard加载(调用load From storyBoard),如果不是就直接创建一个empty View.

 

 

上面这段代码只需要关心第一句就可以了,它的意思说,调用viewDidLoad方法后就view视图就加载完成了。 

从上面这张图中我们可以看到调用viewDidLoad方法前View一直是nil,调用viewDidLoad方法后View才有值了。 

总之一句话,调用了viewDidLoad方法后就创建了View这句话就这么简单。

比较难理解的是loadview方法,这里面非常关键。这里需要重点说明。

如果你不重写loadview方法,系统就会调用其父类的方法,这个不难理解.

但如果你重写了这个方法,打比方,你不调用[super loadview] 应用程序界面就是黑的,因为你的view一直没有被创建。

 

////  MainViewController.m//  Controller////  Created by king on 13-7-7.//#import "MainViewController.h"@interface MainViewController ()@end@implementation MainViewController-(id)init{    self = [super init];    if(self){        //这里不要调用self.view    }    return self;}- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization        //这里不要调用self.view    }    return self;}-(void)loadView{    //这里你要么调用[super loadview]方法创建view    // 要么你自己自定义view ,给view赋值   // [super loadView];        UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];                    view.backgroundColor = [UIColor yellowColor];                    self.view = view;                    [view release];   NSLog(@"viiew %@",self.view);}- (void)viewDidLoad{    [super viewDidLoad];   // NSLog(@"View %@",self.view);这里调用self.view方法要注意的事项,调用self.view方法的时候请确保view不是nil否则程序会引起错乱。                // Do any additional setup after loading the view.}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/liuzenglong/p/3176975.html

你可能感兴趣的文章
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
我的Hook学习笔记
查看>>
js中的try/catch
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
整理推荐的CSS属性书写顺序
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>