ViewController的生命週期隨着系統版本的升級,有些方法已經失效了,爲什麼失效,和爲啥要失效,是我們必須要掌握的技能,剛開始做iOS那會都是讓用mrc寫代碼,爲啥呢,因爲更好的讓明白生命週期,爲了學習本質,隨着時間的轉移,arc的替代了mrc,雖說現在有些第三方庫還是不支持arc,但是蘋果也支持混編,混編其實對一個項目來說並不是更好,我寧願自己動手改改第三方庫,雖說會改出毛病來(畢竟對c++的功底還是要求的),我認爲無論怎麼改都會改出毛病,人家寫好的庫,你改了,就是有毛病,你自己認爲沒有毛病,別人不那樣認爲,所以一般都是對第三方庫進行優化,或者自己寫一個類似的庫來顯示自己技術的牛,其實都是瞎胡鬧,嘴巴那樣說說,心裏還是很佩服的,畢竟別人自己寫的,這樣技術就日益提高了差距。
ViewController的生命週期理解透徹,對內存泄露和優化有着獨特的解決問題的方法,同樣也會讓自己的代碼看起來很規範,說白了最簡單的辦法就是每個方法打印一遍,然後挨個吃透就可以了,深入的辦法就是看源碼自己一步一步去研究去,這樣收穫會更大,在學習其他語言更加方便。我也學了好幾門語言,咋說呢,思想都是相同,還是大神說的對,要把一門語言吃透,首先得有個吃飯的飯碗,其次保持自己的飯碗不會被搶,然後纔是給自己加菜還是加肉就是看自己的職業發展。
#pragma mark 1.初始化方法 - (instancetype)init{ self = [super init]; if(self){ NSLog(@"%s",__func__); } return self; } #pragma mark 2.加載view方法 - (void)loadView{ [super loadView]; NSLog(@"%s",__func__); } #pragma mark 3.加載方法 - (void)viewDidLoad{ [super viewDidLoad]; } #pragma mark 4.將要修改視圖大小方法 - (void)viewWillLayoutSubviews{ [super viewWillLayoutSubviews]; NSLog(@"%s",__func__); } #pragma mark 5.修改視圖完成大小方法 - (void)viewDidLayoutSubviews{ [super viewDidLayoutSubviews]; NSLog(@"%s",__func__); } #pragma mark 6.將要進來方法 - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"%s",__func__); } #pragma mark 7.已經進來方法 - (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; NSLog(@"%s",__func__); } #pragma mark 8.將要進來離開方法 - (void)viewWillDisappear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"%s",__func__); } #pragma mark 9.已經離開方法 - (void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; [self.person release]; self.person = nil; NSLog(@"%s",__func__); } #pragma mark 內存溢出的方法 只要內存溢出,就會調用方法 區域[視圖加載完畢--視圖離開的方法] - (void)didReceiveMemoryWarning{ NSLog(@"%s",__func__); } #pragma mark 釋放內存的方法 只要引用計數位0,就會調用,區域[視圖加載完畢--視圖離開的方法] - (void)dealloc{ [super dealloc]; NSLog(@"%s",__func__); }
以上代碼就是ViewController的生命週期的方法,有些過時了,蘋果內部做了優化,就是不常用。