android ios生命周期,iOS开发之UIView与UIViewController的生命周期总结

iOS开发中,创建View常见的两种方式一个是纯代码,一个是借助于XIB;创建ViewController常见的也有两种方式一个是纯代码,一个是借助于StoryBoard。

通过交流我发现很多童鞋对这些概念都很模糊,于是通过实验写一篇博客供参考。

重写View的如下方法

@implementation YFView

-(instancetype)init{

self = [super init];

NSLog(@"%s", __func__);

return self;

}

-(instancetype)initWithFrame:(CGRect)frame{

self = [super initWithFrame:(CGRect)frame];

NSLog(@"%s", __func__);

return self;

}

-(instancetype)initWithCoder:(NSCoder *)aDecoder{

self = [super initWithCoder:aDecoder];

NSLog(@"%s", __func__);

return self;

}

-(void)awakeFromNib{

[super awakeFromNib];

NSLog(@"%s", __func__);

}

-(void)layoutSubviews{

NSLog(@"%s", __func__);

}

@end

重写ViewController的如下方法

@implementation YFViewController

-(void)loadView{

NSLog(@"%s", __func__);

[super loadView];

}

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

NSLog(@"%s", __func__);

self.view.backgroundColor = [UIColor redColor];

}

-(void)viewDidAppear:(BOOL)animated{

NSLog(@"%s", __func__);

[super viewDidAppear:animated];

}

-(instancetype)init{

self = [super init];

NSLog(@"%s", __func__);

return self;

}

-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{

self = [super initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil];

NSLog(@"%s", __func__);

return self;

}

-(instancetype)initWithCoder:(NSCoder *)aDecoder{

self = [super initWithCoder:aDecoder];

NSLog(@"%s", __func__);

return self;

}

-(void)awakeFromNib{

NSLog(@"%s", __func__);

[super awakeFromNib];

}

@end

结论总结

1.如果控制器是直接通过代码创建出来的,并且调用方法为[[YFViewController alloc]init]创建VC的生命周期为:

-[YFViewController initWithNibName:bundle:]

-[YFViewController init]

-[YFViewController loadView]

-[YFViewController viewDidLoad]

-[YFViewController viewDidAppear:]

2.如果创建控制器时勾选了XIB,那么调用方法为[[YFViewController alloc]init]创建VC时的生命周期为:

-[YFViewController initWithNibName:bundle:]

-[YFViewController init]

-[YFViewController loadView]

-[YFViewController viewDidLoad]

-[YFViewController viewDidAppear:]

3.如果是通过SB创建控制器,那么VC的生命周期为:

-[ViewController initWithCoder:]

-[ViewController awakeFromNib]

-[ViewController loadView]

-[ViewController viewDidLoad]

-[ViewController viewDidAppear:]

4.如果纯代码创建UIView,调用方式为YFView *yfView = [[YFView alloc]init];那么它的生命周期为:

-[YFView initWithFrame:]

-[YFView init]

-[YFView layoutSubviews]

5.如果纯代码创建UIView,调用方式为YFView *yfView = [[YFView alloc]initWithFrame:[UIScreen mainScreen].bounds];那么它的生命周期为:

-[YFView initWithFrame:]

-[YFView layoutSubviews]

6.如果通过XIB创建UIView,调用方式为NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"YFView" owner:nil options:nil];[array lastObject];那么它的生命周期为:

-[YFView initWithCoder:]

-[YFView awakeFromNib]

-[YFView layoutSubviews]

作者:YungFan

链接:https://www.jianshu.com/p/66702f38e977

本公众号转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系本公众号进行修改或删除【联系方式QQ : 3442093904  邮箱:support@cocoachina.com】。文章内容为作者独立观点,不代表本公众号立场。版权归原作者所有,如申请授权请联系作者,因文章侵权本公众号不承担任何法律及连带责任。

---END---

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值