美文网首页
iOS生命周期剖析

iOS生命周期剖析

作者: flowerflower | 来源:发表于2017-01-19 16:23 被阅读119次

load初始化方法<加载到内存就会执行,不需要触发,且只会调用一次>

+ (void)load
只要加载内存中就会调用,如果没有触发该事件也会调用。
在main函数之前调用
ViewController.h //父类
+ (void)load{
    NSLog(@"load父类");
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    NestViewController *nest =[[NestViewController alloc]init];    
    [self.navigationController pushViewController:nest animated:YES];   
}
NestViewController 继承自 ViewController //子类
+ (void)load{
   
    NSLog(@"load_____子类______");
}

打印结果:


load方法

类的初始化方法<创建对象才会执行,需要触发才会执行,且只会调用一次>

+ (void)initialize
1.函数并不会每次创建对象都调用,只有这个类第一次创建对象时才会调用。
2.只有创建对象才会被调用,而且只会调用一次,如果子类重写了该方法,当子类创建的时候也只会调用一次,如果子类没有实现该用法,则会调用父类中的该方法。
在main函数之后调用
ViewController.h //父类
+ (void)initialize{
 NSLog(@"父类 initialize ");
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    NestViewController *nest =[[NestViewController alloc]init];
    [self.navigationController pushViewController:nest animated:YES];
    
}

NestViewController 继承自 ViewController //子类
//如果子类没有实现该方法,则会调用父类中的该方法,
+ (void)initialize{
    NSLog(@"子类 initialize "); 
}

打印


initialize方法.png

对象的初始化方法

- (instancetype)init
init方法和initCoder方法相似,只是调用的方式不一样,如果用代码进行初始化,会调用init;如果从nib文件进行初始化,会调用initCoder

加载视图的方法

- (void)loadView
每次访问UIViewControllerview(比如controller.viewself.view)而且view为nil,loadView方法就会被调用
loadView方法是用来负责创建UIViewControllerview

view创建完毕后调用

- (void)viewDidLoad
界面上的初始化操作。例如比如往view中添加一些子视图、从数据库或者网络加载模型数据装配到子视图中
在类创建后,无论视图的展现或消失,这个方法也是只会在将要布局时调用一次

视图将要展现时会调用

- (void)viewWillAppear:(BOOL)animated

视图已经展现时会调用

- (void)viewDidAppear:(BOOL)animated

视图将要消失时调用

- (void)viewWillDisappear:(BOOL)animated

视图已经消失时调用

-(void)viewDidDisappear:(BOOL)animated

在viewWillAppear后调用,将要对子视图进行布局

-(void)viewWillLayoutSubviews

已经布局完成子视图

-(void)viewDidLayoutSubviews

被释放调用(可测试当前控制器有没有被释放)

-(void)dealloc

内存警告(开发中几乎不管他)

-(void)didReceiveMemoryWarning

相关文章

网友评论

      本文标题:iOS生命周期剖析

      本文链接:https://www.haomeiwen.com/subject/rgtpbttx.html