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

首頁 > 系統 > iOS > 正文

iOS開發教程之UIView和UIViewController的生命周期詳解

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

前言

iOS開發中,創建View常見的兩種方式一個是純代碼,一個是借助于XIB;創建ViewController常見的也有兩種方式一個是純代碼,一個是借助于StoryBoard。

通過交流我發現很多童鞋對這些概念都很模糊,于是通過實驗寫一篇博客供參考。

重寫View的如下方法

@implementation YFView-(instancetype)init{  self = [super init];  NSLog(@"%s", __func__);  return self;}-(instancetype)initWithFrame:(CGRect)frame{  self = [super initWithFrame:(CGRect)frame];  NSLog(@"%s", __func__);  return self; }-(instancetype)initWithCoder:(NSCoder *)aDecoder{  self = [super initWithCoder:aDecoder];  NSLog(@"%s", __func__);  return self; }-(void)awakeFromNib{  [super awakeFromNib];  NSLog(@"%s", __func__);}-(void)layoutSubviews{  NSLog(@"%s", __func__); }@end

重寫ViewController的如下方法

@implementation YFViewController-(void)loadView{  NSLog(@"%s", __func__);  [super loadView];}- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view.  NSLog(@"%s", __func__);  self.view.backgroundColor = [UIColor redColor];}-(void)viewDidAppear:(BOOL)animated{  NSLog(@"%s", __func__);  [super viewDidAppear:animated];  }-(instancetype)init{  self = [super init];  NSLog(@"%s", __func__);  return self;}-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{  self = [super initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil];  NSLog(@"%s", __func__);  return self; }-(instancetype)initWithCoder:(NSCoder *)aDecoder{  self = [super initWithCoder:aDecoder];  NSLog(@"%s", __func__);  return self; }-(void)awakeFromNib{  NSLog(@"%s", __func__);  [super awakeFromNib];}@end

結論總結

如果控制器是直接通過代碼創建出來的,并且調用方法為[[YFViewController alloc]init]創建VC的生命周期為:

-[YFViewController initWithNibName:bundle:]-[YFViewController init]-[YFViewController loadView]-[YFViewController viewDidLoad]-[YFViewController viewDidAppear:]

如果創建控制器時勾選了XIB,那么調用方法為[[YFViewController alloc]init]創建VC時的生命周期為:

-[YFViewController initWithNibName:bundle:] -[YFViewController init]-[YFViewController loadView]-[YFViewController viewDidLoad]-[YFViewController viewDidAppear:]

如果是通過SB創建控制器,那么VC的生命周期為:

-[ViewController initWithCoder:]-[ViewController awakeFromNib]-[ViewController loadView]-[ViewController viewDidLoad]-[ViewController viewDidAppear:]

如果純代碼創建UIView,調用方式為YFView *yfView = [[YFView alloc]init];那么它的生命周期為:

-[YFView initWithFrame:]-[YFView init]-[YFView layoutSubviews]

如果純代碼創建UIView,調用方式為YFView *yfView = [[YFView alloc]initWithFrame:[UIScreen mainScreen].bounds];那么它的生命周期為:

-[YFView initWithFrame:]-[YFView layoutSubviews]

如果通過XIB創建UIView,調用方式為NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"YFView" owner:nil options:nil];[array lastObject];那么它的生命周期為:

-[YFView initWithCoder:]-[YFView awakeFromNib]-[YFView layoutSubviews]

總結

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


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蛟河市| 渝中区| 尉氏县| 黔西县| 南皮县| 枣强县| 玛纳斯县| 临西县| 大悟县| 印江| 通榆县| 潮安县| 香港 | 凤阳县| 略阳县| 吉安县| 靖远县| 东至县| 宁津县| 天柱县| 泾川县| 谢通门县| 印江| 日照市| 财经| 驻马店市| 灌云县| 星座| 阳泉市| 广水市| 安吉县| 黑水县| 太仆寺旗| 肇东市| 即墨市| 灵宝市| 大洼县| 蒙自县| 永康市| 九寨沟县| 兴化市|