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对象的视图,只有相应的标签被选中时才会被创建出来。
  • 相关阅读:
    WM_SIZE和WM_MOVE的函数体内容为什么不一样?
    java调用计算机显示文档
    把消息送到默认窗口函数里,并非一点用都没有,可能会产生新的消息(以WM_WINDOWPOSCHANGED为例)
    使用SetWindowPos API函数移动窗口后,还需修改Delphi的属性值,以备下次使用,否则就会出问题(不是API不起作用,而是使用了错误的坐标值)
    Delphi调用WINAPI时到底应该是指针还是结构体(注意是Delphi变量本身就是指针)
    TWinControl.SetBounds与TWinControl.UpdateBounds赏析(定义和调用)
    delphi的取整函数round、trunc、ceil和floor
    2013Esri全球用户大会之互操作和标准
    Delphi判断文件是否正在被使用(CreateFile也可以只是为了读取数据,而不是创建)
    Delphi 的运算符列表,运算符及优先级表格 good
  • 原文地址:https://www.cnblogs.com/apple-image/p/5345578.html
Copyright © 2011-2022 走看看