iOS經(jīng)驗(yàn)之初始化方法中不該設(shè)置self.view的屬性淺析
前言
iOS初始化方法包括系統(tǒng)默認(rèn)的和自定義的,常見(jiàn)系統(tǒng)初始化方法有init, initWithFrame:, initWithNibName:bundle:等,自定義則是各式各樣。日常iOS項(xiàng)目開(kāi)發(fā)過(guò)程中,我們經(jīng)常在類的初始化方法中初始化接下來(lái)類需要用到的一些必要的數(shù)據(jù)或界面。
本文主要介紹的是關(guān)于iOS初始化方法不設(shè)置self.view屬性的相關(guān)內(nèi)容,屬于 iOS小經(jīng)驗(yàn)系列:累積平時(shí)看起來(lái)簡(jiǎn)單,但容易忽視的小經(jīng)驗(yàn),各路大佬敬請(qǐng)回避。
正文:
有個(gè)小伙伴新寫了一個(gè)NextViewController,重新了兩個(gè)生命周期:
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)的時(shí)候用這樣的代碼:
- (void)nextButtonClick:(UIButton *)sender {
NextViewController *nextVC = [[NextViewController alloc]init];
nextVC.source = [self.source copy];
[self presentViewController:nextVC animated:YES completion:nil];
}
問(wèn)題描述
結(jié)果發(fā)現(xiàn),在執(zhí)行數(shù)據(jù)源傳值 nextVC.source = [self.source copy]; 代碼之前,NextViewController的 viewDidLoad 死活要先執(zhí)行,即使還沒(méi)執(zhí)行pushViewController。
問(wèn)題原因
造成這個(gè)問(wèn)題的原因是在init的方法中設(shè)置self.view相關(guān)屬性時(shí),會(huì)導(dǎo)致viewDidLoad執(zhí)行,即使前面的頁(yè)面還沒(méi)有push過(guò)來(lái),即使還沒(méi)顯示。
知識(shí)小點(diǎn)
不能混淆和亂用生命周期方法,初始化的方法中不該設(shè)置self.view的屬性。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Swift 2.1 為 UIView 添加點(diǎn)擊事件和點(diǎn)擊效果
本文主要介紹 Swift UIView,這里給大家提供代碼示例作為參考為UIView 添加點(diǎn)擊事件和點(diǎn)擊效果,希望能幫助IOS開(kāi)發(fā)的同學(xué)2016-07-07
IOS App圖標(biāo)和啟動(dòng)畫面尺寸詳細(xì)介紹
這篇文章主要介紹了IOS App圖標(biāo)和啟動(dòng)畫面尺寸詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02
iOS Block解開(kāi)多年以來(lái)一直的誤解
這篇文章主要給大家介紹了關(guān)于iOS Block多年以來(lái)一直的誤解如何解開(kāi)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05
IOS 開(kāi)發(fā)狀態(tài)欄隱藏的實(shí)現(xiàn)辦法
這篇文章主要介紹了IOS 開(kāi)發(fā)狀態(tài)欄隱藏的實(shí)現(xiàn)辦法的相關(guān)資料,需要的朋友可以參考下2017-02-02
iOS中PNChart與UITableView的聯(lián)動(dòng)示例詳解
PNChart是個(gè)界面很漂亮的圖表第三方庫(kù),UITableView則不用過(guò)多介紹了,各位iOS開(kāi)發(fā)者們都知道,下面這篇文章主要給大家介紹了關(guān)于iOS中PNChart與UITableView的聯(lián)動(dòng)的相關(guān)資料,需要的朋友可以參考下2018-07-07
iOS開(kāi)發(fā)系列--詳細(xì)講解C語(yǔ)言之存儲(chǔ)方式和作用域
本篇文章主要介紹了iOS開(kāi)發(fā)系列--詳細(xì)講解C語(yǔ)言之存儲(chǔ)方式和作用域,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
iOS中時(shí)間與時(shí)間戳的相互轉(zhuǎn)化實(shí)例代碼
這篇文章主要介紹了iOS中時(shí)間與時(shí)間戳的相互轉(zhuǎn)化實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-03-03

