当前位置: 首页 > 编程笔记 >

iOS开发教程之UIView和UIViewController的生命周期详解

宗建章
2023-03-14
本文向大家介绍iOS开发教程之UIView和UIViewController的生命周期详解,包括了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

结论总结

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

-[YFViewController initWithNibName:bundle:]
-[YFViewController init]
-[YFViewController loadView]
-[YFViewController viewDidLoad]
-[YFViewController viewDidAppear:]

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

-[YFViewController initWithNibName:bundle:] 
-[YFViewController init]
-[YFViewController loadView]
-[YFViewController viewDidLoad]
-[YFViewController viewDidAppear:]

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

-[ViewController initWithCoder:]
-[ViewController awakeFromNib]
-[ViewController loadView]
-[ViewController viewDidLoad]
-[ViewController viewDidAppear:]

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

-[YFView initWithFrame:]
-[YFView init]
-[YFView layoutSubviews]

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

-[YFView initWithFrame:]
-[YFView layoutSubviews]

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

-[YFView initWithCoder:]
-[YFView awakeFromNib]
-[YFView layoutSubviews]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。

 类似资料:
  • 本文向大家介绍iOS UIViewController的完整生命周期相关面试题,主要包含被问及iOS UIViewController的完整生命周期时的应答技巧和注意事项,需要的朋友参考一下 UIViewController的完整生命周期 -[ViewControllerinitWithNibName:bundle:]; -[ViewControllerinit]; -[ViewControlle

  • 本文向大家介绍UIViewController 的生命周期相关面试题,主要包含被问及UIViewController 的生命周期时的应答技巧和注意事项,需要的朋友参考一下 1.通过alloc init分配内存,初始化controller. 2.loadView (loadView方法默认实现[super loadView] 如果在初始化controller吋指定了xib文件名,就会根据传入的xib

  • 本文向大家介绍java 线程的生命周期详解,包括了java 线程的生命周期详解的使用技巧和注意事项,需要的朋友参考一下 一个线程的生命周期: 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。 就绪状态: 当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列

  • 主要内容:1. 需求阶段,2. 设计阶段,3. 建设/发展阶段,4. 测试阶段,5. 部署/交付阶段,6. 维护阶段软件开发生命周期(SDLC)是一个创建软件开发结构的过程。SDLC中有不同的阶段,每个阶段都有自己不同的活动。它使开发团队能够设计,创建和交付高质量的产品。 SDLC描述了软件开发的各个阶段和阶段的执行顺序。每个阶段都需要在软件开发的生命周期中从前一阶段交付。需求转化为设计,设计转化为开发和开发成测试,经过测试后提供给客户。 软件开发周期的不同阶段如下所示: 1. 需求阶段 这是开

  • 本文向大家介绍Java线程的生命周期的详解,包括了Java线程的生命周期的详解的使用技巧和注意事项,需要的朋友参考一下 Java线程的生命周期的详解 对于多线程编程而言,理解线程的生命周期非常重要,本文就针对这一点进行讲解。 一、线程的状态 线程的存在有几种不同的状态,如下: New状态 Ready状态 Running状态 Dead状态 Non Runnable状态 1、New状态 New状态是线

  • 本文向大家介绍springMVC的生命周期详解,包括了springMVC的生命周期详解的使用技巧和注意事项,需要的朋友参考一下 springMVC的生命周期,听到的时候都没有反应过来,springMVC还有生命周期?现在看来生命周期就是springMVC的流程,SpringMVC是MVC思想的一种实现,下面看一下MVC思想的流程图: MVC的核心思想如上图,那么springMVC是如何实现MVC的