新浪微博 有道云笔记 麦库 EverNote Pocket Instapaper 更多

04-控制器的生命周期方法

 

  1. 源代码下载链接:04-控制器的生命周期方法.zip
    32.3 KB
  2. // MJViewController.h

    Map
  3. //
  4. //  MJViewController.h
  5. //  04-控制器的生命周期方法
  6. //
  7. //  Created by apple on 13-12-10.
  8. //  Copyright (c) 2013itcast. All rights reserved.
  9. //

  10. #import<UIKit/UIKit.h>

  11. @interfaceMJViewController : UIViewController

  12. @end
  13. // MJViewController.m

    Map
  14. //
  15. //  MJViewController.m
  16. //  04-控制器的生命周期方法
  17. //
  18. //  Created by apple on 13-12-10.
  19. //  Copyright (c) 2013itcast. All rights reserved.
  20. //

  21. #import"MJViewController.h"

  22. @interfaceMJViewController ()

  23. @end

  24. @implementationMJViewController

  25. #pragma mark控制器的view加载完毕就会调用一次
  26. - (void)viewDidLoad
  27. {
  28.     [superviewDidLoad];
  29.    
  30.     NSLog(@"MJViewController------viewDidLoad");
  31. }

  32. #pragma mark控制器的view显示完毕的时候调用
  33. - (void)viewDidAppear:(BOOL)animated
  34. {
  35.     [superviewDidAppear:animated];
  36.    
  37.     NSLog(@"MJViewController-------viewDidAppear");
  38. }
  39. #pragma mark控制器的view即将显示的时候调用
  40. - (void)viewWillAppear:(BOOL)animated
  41. {
  42.     [superviewWillAppear:animated];
  43.    
  44.     NSLog(@"MJViewController-------viewWillAppear");
  45. }

  46. #pragma mark当控制器的view从父控件中移除的时候,才又可能会执行下面的方法

  47. #pragma mark控制器的view消失完毕的时候调用
  48. - (void)viewDidDisappear:(BOOL)animated
  49. {
  50.     [superviewDidDisappear:animated];
  51.    
  52.     NSLog(@"MJViewController-------viewDidDisappear");
  53. }

  54. #pragma mark控制器的view即将消失的时候调用
  55. - (void)viewWillDisappear:(BOOL)animated
  56. {
  57.     [superviewWillDisappear:animated];
  58.    //本文永久链接,转载请注明出处:http://www.cnblogs.com/ChenYilong/p/3490869.html
  59.     NSLog(@"MJViewController-------viewWillDisappear");
  60. }

  61. #pragma mark接收到内存警告就会调用
  62. - (void)didReceiveMemoryWarning
  63. {
  64.     [superdidReceiveMemoryWarning];
  65.    
  66.    /*
  67.      didReceiveMemoryWarning方法内部的实现
  68.      1>首先会检测控制器的view有没有父控件
  69.      if (self.view.superview == nil) {
  70.         //销毁控制器的view
  71.         //控制器的view销毁完毕,就会调用控制器的viewDidUnload方法
  72.      } else {
  73.         //不销毁
  74.      }
  75.      */
  76.    
  77.    
  78.    //内存清除操作(比如释放界面上依赖的模型数据)
  79. }

  80. /*
  81.  1.当控制器接收到内存警告时,会调用didReceiveMemoryWarning方法
  82.  
  83.  2.didReceiveMemoryWarning方法内部的默认实现
  84.  1>首先会检测控制器的view有没有父控件
  85.  if (self.view.superview == nil) { //检测控制器的view在不在屏幕上
  86.      //就会尝试销毁控制器的view
  87.     //即将销毁的时候,就会调用控制器的viewWillUnload
  88.     //销毁完毕的时候,就会调用控制器的viewDidUnload方法
  89.  } else {
  90.      //不销毁
  91.  }
  92.  
  93.  
  94.  3.当需要再次使用控制器的view时,又会调用loadView方法来创建view
  95.  
  96.  4.接着会调用一系列的生命周期方法
  97.  viewDidLoad ---> ......
  98.  
  99.  
  100.  5.生命周期循环
  101.  loadView --> viewDidLoad --> ..可见.. --内存警告--> didReceiveMemoryWarning ---> viewWillUnload --> viewDidUnload ---再次使用---> loadView
  102.  
  103.  */

  104. @end

 

 

https://www.evernote.com/shard/s227/sh/eece6838-bd81-421e-aaa0-9c50aa6b52bc/370bb89d199a6f7453f1e5dc5a14a933

posted @ 2013-12-25 16:05  iTeaTime(技术清谈)  阅读(466)  评论(0)    收藏  举报