簡單介紹關於IOS的生命週期過程

初步瞭解一下生命週期的過程:app

1.經過alloc init 分配內存,初始化controller.spa

2.loadView
loadView方法默認實現[super loadView]
若是在初始化controller時指定了xib文件名,就會根據傳入的xib文件名加載對應的xib文件,若是沒傳xib文件名,默認會加載跟controller同名的xib文件,若是沒找到相關聯的xib文件,就會建立一個空白的UIView,而後賦給controller的view
code

3.viewDidLoad
當loadView建立完view以後,此時view已經完成加載了,會調用viewDidLoad方法;通常我會在這裏作界面上的初始化操做,好比添加按鈕,子視圖,等等.blog

4.viewWillAppear生命週期

view在load完以後,將要顯示在屏幕以前會調用這個方法圖片

在重寫這些方法時候最好先調用一下系統的方法以後在作操做。內存

5.viewDidAppear
當view已經在屏幕上顯示出來以後,會調用這個方法get

 

當一個視圖被移除屏幕而且銷燬的時候it

 6.viewWillDisappeario

當視圖將要從屏幕上移除時候調用

7.viewDidDisappear
當視圖已經從屏幕上移除時候調用

8.dealloc
view被銷燬時候調用,若是是手動管理內存的話,須要釋放掉以前在init和viewDidLoad中分配的內存(相似alloc,new,copy);dealloc方法不能由咱們主動調用,必須等引用計數爲0時候由系統調用.

注意:viewDidUnload 在6.0以後已經廢棄了。簡單來講,對於iOS6,你不須要作任何之前viewDidUnload的事情,更不須要把之前viewDidUnload的代碼移動到 didReceiveMemoryWarning方法中

二:生命週期圖片展現

三;代碼示例

首先建立一個UIVIewControl,這頁面包含一個button 能夠實現跳轉到下一個頁面;而後查看它的生命週期執行順序;
- (void)loadView { [super loadView]; NSLog(@"%@------%s",[self class], __FUNCTION__); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"%@------%s",[self class], __FUNCTION__); self.view.backgroundColor = [UIColor redColor]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(barClick:)]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSLog(@"%@------%s",[self class], __FUNCTION__); } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; NSLog(@"%@------%s",[self class], __FUNCTION__); } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; NSLog(@"%@------%s",[self class], __FUNCTION__); } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; NSLog(@"%@------%s",[self class], __FUNCTION__); } #pragma mark - buttonClick - (void)barClick:(UIBarButtonItem *)button { FirstViewController *VC = [[FirstViewController alloc] init]; [self.navigationController pushViewController:VC animated:YES]; }

而後另外建一個視圖 :VIewController,
- (void)loadView { [super loadView]; NSLog(@"%@------%s",[self class], __FUNCTION__); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"%@------%s",[self class], __FUNCTION__); self.view.backgroundColor = [UIColor greenColor]; } // 視圖將要出現時就會調用 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSLog(@"%@------%s",[self class], __FUNCTION__); } // 視圖徹底出現時就會調用 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; NSLog(@"%@------%s",[self class], __FUNCTION__); } // 視圖將要消失會調用 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; NSLog(@"%@------%s",[self class], __FUNCTION__); } // 視圖徹底消失會調用 - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; NSLog(@"%@------%s",[self class], __FUNCTION__); }

 

在ViewController頁面中有一個button 點擊button能夠轉到到FirstViewController 由程序運行結果可知: 當剛運行程序時按順序依次執行:

複製代碼
1. loadView
2. viewDidLoad
3. viewWillAppear
4. viewDidAppear
5. viewWillDisappear
6. FirstViewController loadView
7. FirstViewController viewDidLoad
8. FirstViewController viewWillAppear
9. viewController viewDidDisappear
10. FirstViewController viewDidappear
複製代碼

當再一次點擊左上角的返回鍵時 從FirstViewController跳轉到viewController 由程序的運行結果可知 程序的運行順序爲;

複製代碼
1. loadView
2. viewDidLoad
3. viewWillAppear
4. viewDidAppear
5. viewWillDisappear
6. FirstViewController loadView
7. FirstViewController viewDidLoad
8. FirstViewController viewWillAppear
9. viewController viewDidDisappear
10. FirstViewController viewDidappear
11. FirstViewController viewWillDisappear
12. viewController viewWillAppear
13. FirstViewController viewWillDisappear
14. viewController viewDidAppear
複製代碼

從程序的執行順序能夠看出來每一個viewController只執行一次loadView和viewDidLoad

相關文章
相關標籤/搜索