通俗易懂的讲解iphone视图控制器的生命周期
来源:互联网 发布:阿里云cdn回源 编辑:程序博客网 时间:2024/06/03 13:49
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
0 0
- 通俗易懂的讲解iphone视图控制器的生命周期
- 通俗易懂的讲解iphone视图控制器的生命周期
- 视图控制器的生命周期
- 视图控制器的生命周期
- 视图控制器的生命周期
- 视图控制器的生命周期
- 视图控制器的生命周期
- 视图控制器 的生命周期
- 视图控制器的生命周期
- 视图控制器的生命周期
- iOS 视图控制器的生命周期
- IOS视图控制器的生命周期
- 视图控制器对象的生命周期
- IOS_UITableViewController 视图控制器的生命周期
- 视图控制器ViewController的生命周期
- iOS视图控制器的生命周期
- iOS视图控制器的生命周期
- 视图控制器的生命周期方法
- iOS正则表达式,手机号、邮箱验证
- HTML5学习(九)----应用程序缓存
- HTML5学习(十)---Web Workers
- HTML5学习(十一)---服务器发送事件
- AVCaptureDevice的几个属性使用
- 通俗易懂的讲解iphone视图控制器的生命周期
- 【转】android 自定义控件
- ios 开发中 developer tools access 总是要输入密码问题的解决
- Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程
- Android 面试题(经典)
- Android 中Activity生命周期分析(二):从AActivity 到BActivity过程分析
- std::map 如何使用结构体作为自定义键值
- vs2010 MFC +win7下的程序 在win7上正常运行,XP就出错(ADO数据库连接出错)
- 转 intent常用功能