zoukankan      html  css  js  c++  java
  • 视图控制器的生命周期

      补充: NSLog(@"%s",__func__);//这句话可以打印什么类中的什么方法
     
       一     什么是视图控制器
    (1)视图控制器就是用来“控制”或者“管理”界面(视图)的
           控制器就是创建控件和给控件传递数据的
             “换句话说界面长得丑与美由视图控制器说的算”
    (2)每个视图控制器(UIViewController)都有一个View属性来描述界面长什么
     
     二 视图控制器的创建方式
    (1)UIStoryboard的方式
          UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
      *1  获取storyboard箭头所指的视图控制器
    ViewController *vc = [storyboard instantiateInitialViewController];
      *2  获取storyboard标识了ID所指的视图控制器
     ViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"haha"];
    (2)直接创建控制器
       ViewController *vc2 =[[ViewController alloc]init];
    (3)创建带xib的视图控制器
      ViewController *vc = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
      * 调用控制器的【-(instancetype)initWithNibName:bundle:】;
     
    "【总结视图控制器的View创建的流程】"
    如果控制器是从storyboard创建,loadView从storyboard加载
    如果控制器是自己创建,加载xib,没有xib,自己创建一个空白的view
     
     
     三  控制器的生命周期
    (1)理解控制器的生命周期的几个方法
    *1 视图控制器初始化的时候调用这个方法(复写这三种方法都要父类调用)
    - (id)initWithCoder:(NSCoder *)aDecoder;//创建视图控制器
    -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;
    -(id)init;
     
    *2当使用视图控制器上的view的时候用这两个方法(使用其他的view不会调用)
     loadView//视图的自定义
    注:当程序中的控件加载完毕时的时候自动调用ViewDidLoad
    viewDidLoad //view加载完毕
     注:view的懒加载:啥时候使用view,啥时候调用这两个方法;(这个是把view样式加载到内存中,viewWippAppear的目的是按照view样式渲染到屏幕上)
     
     *3 当视图显示的时候调用这个两个方法(即开始显示在窗口的时候开始调用       )
    viewWillAppear//view即将显示
    viewDidAppear//view已经显示
    viewWillDisappear//view即将消失
    viewDidDisappear//view已经消失
    viewWillUnload//view即被卸载
    viewDidUnload//view已经卸载
    dealloc//控制器被销毁
    补充1:
        如果控制器不消失的话,一般不会执行viewWillUnload,(除非内存警告)
    补充2:
         使用xib创建的视图
       MyView *view1 = [[[NSBundle mainBundle]loadNibNamed:@"View" owner:nil options:nil]lastObject];
    #import "MyView.h"

    @implementation MyView
    当是视图初始化的时候调用这个方法
    -(void)awakeFromNib{
        [super awakeFromNib];
        NSLog(@"%s",__func__);
    }
     
    @end
     
     
     
    生命周期方法
     
     
     
     
     
     
     
     
    iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的区别及用途
     

    init-初始化程序

    viewDidLoad-加载视图

    viewWillAppear-UIViewController对象的视图即将加入窗口时调用;

    viewDidApper-UIViewController对象的视图已经加入到窗口时调用;

    viewWillDisappear-UIViewController对象的视图即将消失、被覆盖或是隐藏时调用;

    viewDidDisappear-UIViewController对象的视图已经消失、被覆盖或是隐藏时调用;

    viewVillUnload-当内存过低时,需要释放一些不需要使用的视图时,即将释放时调用;

     
    viewDidUnload-当内存过低,释放一些不需要的视图时调用。
     
     
    视图控制对象通过alloc和init来创建,但是视图控制对象不会在创建的那一刻就马上创建相应的视图,而是等到需要使用的时候才通过调用loadView来创建,这样的做法能提高内存的使用率。比如,当某个标签有很多UIViewController对象,那么对于任何一个UIViewController对象的视图,只有相应的标签被选中时才会被创建出来。
  • 相关阅读:
    Linux基础---开关机与帮助
    Linux磁盘管理命令
    批处理之命令补充II
    LeetCode 328. 奇偶链表(Odd Even Linked List)
    LeetCode 岛屿的最大面积(探索字节跳动)
    LeetCode 复原IP地址(探索字节跳动)
    LeetCode 简化路径(探索字节跳动)
    LeetCode 最长公共前缀(探索字节跳动)
    LeetCode 无重复字符的最长子串(探索字节跳动)
    自动机器学习超参数调整(贝叶斯优化)
  • 原文地址:https://www.cnblogs.com/apple-image/p/5345578.html
Copyright © 2011-2022 走看看