iOS經(jīng)驗(yàn)之初始化方法中不該設(shè)置self.view的屬性淺析
前言
iOS初始化方法包括系統(tǒng)默認(rèn)的和自定義的,常見系統(tǒng)初始化方法有init, initWithFrame:, initWithNibName:bundle:等,自定義則是各式各樣。日常iOS項(xiàng)目開發(fā)過程中,我們經(jīng)常在類的初始化方法中初始化接下來類需要用到的一些必要的數(shù)據(jù)或界面。
本文主要介紹的是關(guān)于iOS初始化方法不設(shè)置self.view屬性的相關(guān)內(nèi)容,屬于 iOS小經(jīng)驗(yàn)系列:累積平時看起來簡單,但容易忽視的小經(jīng)驗(yàn),各路大佬敬請回避。
正文:
有個小伙伴新寫了一個NextViewController,重新了兩個生命周期:
init
- (instancetype)init{ self = [super init]; if (self) { self.modalPresentationStyle = UIModalPresentationCustom; self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; self.edgesForExtendedLayout = UIRectEdgeNone; self.view.alpha = 0; self.view.backgroundColor = [UIColor clearColor]; } return self; }
viewDidLoad
- (void)viewDidLoad { [super viewDidLoad]; //....根據(jù)數(shù)據(jù)源source顯示列表數(shù)據(jù) }
加載代碼
跳轉(zhuǎn)的時候用這樣的代碼:
- (void)nextButtonClick:(UIButton *)sender { NextViewController *nextVC = [[NextViewController alloc]init]; nextVC.source = [self.source copy]; [self presentViewController:nextVC animated:YES completion:nil]; }
問題描述
結(jié)果發(fā)現(xiàn),在執(zhí)行數(shù)據(jù)源傳值 nextVC.source = [self.source copy];
代碼之前,NextViewController的 viewDidLoad 死活要先執(zhí)行,即使還沒執(zhí)行pushViewController。
問題原因
造成這個問題的原因是在init的方法中設(shè)置self.view
相關(guān)屬性時,會導(dǎo)致viewDidLoad執(zhí)行,即使前面的頁面還沒有push過來,即使還沒顯示。
知識小點(diǎn)
不能混淆和亂用生命周期方法,初始化的方法中不該設(shè)置self.view的屬性。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
iOS動態(tài)驗(yàn)證碼實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家介紹了ios動態(tài)驗(yàn)證碼的實(shí)現(xiàn)方法,代碼簡單易懂,非常不錯,具有參考借鑒價(jià)值,需要的朋友參考下吧2018-04-04iOS開發(fā)Masonry與Frame布局差異示例詳解
這篇文章主要為大家介紹了iOS開發(fā)Masonry與Frame布局差異示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11iOS開發(fā)教程之UIRefreshControl使用的踩坑指南
UIRefreshControl是iOS6自帶的UITableView下拉刷新控件。下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)教程之UIRefreshControl使用的踩坑指南,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04IOS點(diǎn)擊按鈕隱藏狀態(tài)欄詳解及實(shí)例代碼
這篇文章主要介紹了IOS點(diǎn)擊按鈕隱藏狀態(tài)欄詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02Objective-C實(shí)現(xiàn)身份證驗(yàn)證的方法示例
這篇文章主要給大家分享了Objective-C實(shí)現(xiàn)身份證驗(yàn)證的方法,文中給出了詳細(xì)的示例代碼,對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03IOS利用CocoaHttpServer搭建手機(jī)本地服務(wù)器
這篇文章主要介紹了IOS利用CocoaHttpServer搭建手機(jī)本地服務(wù)器的步驟,幫助大家更好的理解和學(xué)習(xí)使用ios開發(fā),感興趣的朋友可以了解下2021-04-04IOS打開照相機(jī)與本地相冊選擇圖片實(shí)例詳解
這篇文章主要介紹了IOS打開照相機(jī)與本地相冊選擇圖片實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06