-------UIViewController的生命周期

1.UIViewController

 UIViewController是iOS顶层视图的载体及控制器,用户与程序界面的交互都是由UIViewController来控制的
    UIViewController管理UIView的生命周期及资源的加载与释放
    UIView与UIViewController共同展示了用户界面(视图控制器不是UIView,每一个视图控制器都有一个view,视图控制器是个大管家,管理这个视图的加载、卸载、横屏显示)
    当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序
    (1) alloc                               创建对象,分配空间
    (2) init (initWithNibName)    初始化对象,初始化数据
    (3) loadView                        从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
    (4) viewDidLoad                  载入完成,可以进行自定义数据以及动态创建其他控件
    (5) viewWillAppear              视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
    (6) viewDidAppear               视图已在屏幕上渲染完成
当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反
    (1) viewWillDisappear          视图将被从屏幕上移除之前执行
    (2) viewDidDisappear           视图已经被从屏幕上移除,用户看不到这个视图了
    (3) dealloc                             视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放

2.UIViewController生命周期


(1)- (void)loadView    创建载入根视图

loadView只会                               被调用一次,因为 loadView第一次调用之后,view就不再为空

loadView首先判断是否有可用的xib文件可以加载,如果有则加载xib文件来创建                                    此控制器的view,如果没有,则使用代码创建此控制器的view

(2)- (void)viewDidLoad 视图加载完成

 这个方法调用的时机:在外部访问根视图的时候,并且当前的根视图是nil的时候

(3)- (void)viewWillAppear:(BOOL)animated 视图将要出现在屏幕之前

  系统在载入所有数据后,将会在屏幕上显示视图,这时会先调用这个方法。通常我们会利用这个方法,对即将显示的视图做进一步 的设置

(4)- (void)viewDidAppear:(BOOL)animated  视图已在屏幕上渲染完成

viewDidAppear方法,因为控制器的view可以多次添加到父视图上,因此viewDidAppear可以调用多次。

(5)- (void)viewWillDisappear:(BOOL)animated  视图将被从屏幕上移除之前执行

(6)- (void)viewDidDisappear:(BOOL)animated   视图已经从屏幕上移除

(7)- (void)didReceiveMemoryWarning 


3. loadView与viewDidLoad的关系


ios 视图生命周期 ios视图控制器的生命周期_加载