UIView的生命周期

接上次VC的生命周期

XibView的加载过程

//CodeVC代码

#import "CodeInitViewController.h"
#import "XibInitViewController.h"
#import "CodeView.h"
#import "XibView.h"
@interface CodeInitViewController ()

@end

@implementation CodeInitViewController


+ (void)load {
    [super load];
    NSLog(@"CodeVC     %s     ",__func__);
}

+ (void)initialize
{
    [super initialize];
    NSLog(@"CodeVC     %s     ",__func__);
}

+ (instancetype)alloc {
    NSLog(@"CodeVC     %s     ",__func__);
   return [super alloc];
}


- (instancetype)initWithCoder:(NSCoder *)coder
{
     NSLog(@"CodeVC     %s     ",__func__);
    
    return [super initWithCoder:coder];
}

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
     NSLog(@"CodeVC     %s     ",__func__);
    return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
}

- (instancetype)init
{
    NSLog(@"CodeVC     %s     ",__func__);
    return [super init];
}

- (void)loadView {

    [super loadView];
    NSArray *viewArray = [[NSBundle mainBundle] loadNibNamed:@"XibView" owner:nil options:nil];
         XibView *view = [viewArray firstObject];
         [self.view addSubview:view];
    
    NSLog(@"CodeVC     %s     ",__func__);
}


- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor greenColor];
    NSLog(@"CodeVC     %s     ",__func__);
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
     NSLog(@"CodeVC     %s     ",__func__);
}

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"CodeVC     %s     ",__func__);
}

- (void)viewWillDisappear:(BOOL)animated {
     [super viewWillDisappear:animated];
    NSLog(@"CodeVC     %s     ",__func__);
}

- (void)viewDidDisappear:(BOOL)animated {
     [super viewDidDisappear:animated];
    NSLog(@"CodeVC     %s     ",__func__);
}

- (void)viewWillLayoutSubviews {
     [super viewWillLayoutSubviews];
    NSLog(@"CodeVC     %s     ",__func__);
}


- (void)viewDidLayoutSubviews {
      [super viewDidLayoutSubviews];
    NSLog(@"CodeVC     %s     ",__func__);
}

-(void)dealloc {
    NSLog(@"CodeVC     %s     ",__func__);
}


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    //通过xib创建
       XibInitViewController *xibVc = [[XibInitViewController alloc] init];
       [self.navigationController pushViewController:xibVc animated:YES];
}
@end

//XibView.m代码

#import "XibView.h"

@implementation XibView

- (instancetype)initWithCoder:(NSCoder *)coder
{
    NSLog(@"XibView    %s     ",__func__);
    if (self = [super initWithCoder:coder]) {
        
    }
    return self;
  
}

- (instancetype)init {
    NSLog(@"XibView    %s     ",__func__);
    return [super init];
}

- (instancetype)initWithFrame:(CGRect)frame {
    NSLog(@"XibView    %s     ",__func__);
    return [super initWithFrame:frame];
}

-(void)awakeFromNib {
     NSLog(@"XibView    %s     ",__func__);
    [super awakeFromNib];

}

@end

打印结果

2020-05-27 06:47:14.567548+0800 OCTestFirst[1823:43207] CodeVC     +[CodeInitViewController initialize]
2020-05-27 06:47:14.567796+0800 OCTestFirst[1823:43207] CodeVC     +[CodeInitViewController alloc]
2020-05-27 06:47:14.567949+0800 OCTestFirst[1823:43207] CodeVC     -[CodeInitViewController init]
2020-05-27 06:47:14.568061+0800 OCTestFirst[1823:43207] CodeVC     -[CodeInitViewController initWithNibName:bundle:]
2020-05-27 06:47:14.570756+0800 OCTestFirst[1823:43207] XibView    -[XibView initWithCoder:]
2020-05-27 06:47:14.571228+0800 OCTestFirst[1823:43207] XibView    -[XibView awakeFromNib]
2020-05-27 06:47:14.571970+0800 OCTestFirst[1823:43207] CodeVC     -[CodeInitViewController loadView]
2020-05-27 06:47:14.572530+0800 OCTestFirst[1823:43207] CodeVC     -[CodeInitViewController viewDidLoad]
2020-05-27 06:47:14.573285+0800 OCTestFirst[1823:43207] boardVC     -[ViewController viewWillDisappear:]
2020-05-27 06:47:14.574013+0800 OCTestFirst[1823:43207] CodeVC     -[CodeInitViewController viewWillAppear:]
2020-05-27 06:47:14.586452+0800 OCTestFirst[1823:43207] CodeVC     -[CodeInitViewController viewWillLayoutSubviews]
2020-05-27 06:47:14.586631+0800 OCTestFirst[1823:43207] CodeVC     -[CodeInitViewController viewDidLayoutSubviews]
2020-05-27 06:47:15.092355+0800 OCTestFirst[1823:43207] boardVC     -[ViewController viewDidDisappear:]
2020-05-27 06:47:15.092634+0800 OCTestFirst[1823:43207] CodeVC     -[CodeInitViewController viewDidAppear:]

如果VC中的loadView写为

- (void)loadView {
    
    [super loadView];
    self.view = [[XibView alloc]init];
    NSLog(@"CodeVC     %s     ",__func__);
}

则打印结果为

2020-05-27 06:51:26.097517+0800 OCTestFirst[1892:45638] XibView    -[XibView init]
2020-05-27 06:51:26.097687+0800 OCTestFirst[1892:45638] XibView    -[XibView initWithFrame:]
2020-05-27 06:51:26.098198+0800 OCTestFirst[1892:45638] CodeVC     -[CodeInitViewController loadView]
2020-05-27 06:51:26.098686+0800 OCTestFirst[1892:45638] CodeVC     -[CodeInitViewController viewDidLoad]
2020-05-27 06:51:26.099067+0800 OCTestFirst[1892:45638] boardVC     -[ViewController viewWillDisappear:]
2020-05-27 06:51:26.099518+0800 OCTestFirst[1892:45638] CodeVC     -[CodeInitViewController viewWillAppear:]
2020-05-27 06:51:26.113316+0800 OCTestFirst[1892:45638] CodeVC     -[CodeInitViewController viewWillLayoutSubviews]
2020-05-27 06:51:26.113521+0800 OCTestFirst[1892:45638] CodeVC     -[CodeInitViewController viewDidLayoutSubviews]
2020-05-27 06:51:26.623169+0800 OCTestFirst[1892:45638] boardVC     -[ViewController viewDidDisappear:]
2020-05-27 06:51:26.623613+0800 OCTestFirst[1892:45638] CodeVC     -[CodeInitViewController viewDidAppear:]

总结:
1、通过xib文件来自定义控件是,VC中调用view用bundle调用时则会走initWithCoder,awakeFromNib方法
如果VC中调用view 用alloc,init调用 则走init,initWithFrame:方法;
2、如果不指定自定义View的Custom class为同名类,则不会执行initWithCoder,awakeFromNib方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值