国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS經驗之初始化方法中不該設置self.view的屬性淺析

2019-10-21 18:39:43
字體:
來源:轉載
供稿:網友

前言

iOS初始化方法包括系統默認的和自定義的,常見系統初始化方法有init, initWithFrame:, initWithNibName:bundle:等,自定義則是各式各樣。日常iOS項目開發過程中,我們經常在類的初始化方法中初始化接下來類需要用到的一些必要的數據或界面。

本文主要介紹的是關于iOS初始化方法不設置self.view屬性的相關內容,屬于 iOS小經驗系列:累積平時看起來簡單,但容易忽視的小經驗,各路大佬敬請回避。

正文:

有個小伙伴新寫了一個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]; //....根據數據源source顯示列表數據}

加載代碼

跳轉的時候用這樣的代碼:

- (void)nextButtonClick:(UIButton *)sender {  NextViewController *nextVC = [[NextViewController alloc]init]; nextVC.source = [self.source copy]; [self presentViewController:nextVC animated:YES completion:nil];}

問題描述

結果發現,在執行數據源傳值 nextVC.source = [self.source copy]; 代碼之前,NextViewController的 viewDidLoad 死活要先執行,即使還沒執行pushViewController。

問題原因

造成這個問題的原因是在init的方法中設置self.view相關屬性時,會導致viewDidLoad執行,即使前面的頁面還沒有push過來,即使還沒顯示。

知識小點

不能混淆和亂用生命周期方法,初始化的方法中不該設置self.view的屬性。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 明光市| 甘肃省| 南投市| 绩溪县| 湘潭市| 房山区| 原平市| 县级市| 天津市| 昭平县| 得荣县| 南华县| 辽源市| 横山县| 甘肃省| 临邑县| 东方市| 虎林市| 青州市| 迁西县| 平乡县| 米易县| 吉木萨尔县| 长寿区| 页游| 大埔县| 若羌县| 徐州市| 巴林右旗| 阿鲁科尔沁旗| 荥经县| 牡丹江市| 绥棱县| 白玉县| 阜新市| 庆安县| 永胜县| 旬阳县| 玛曲县| 福海县| 新田县|