国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平顶山市| 阳城县| 阳西县| 广灵县| 汉寿县| 永德县| 察雅县| 宁阳县| 潼关县| 光山县| 井研县| 察隅县| 霍城县| 大同市| 台安县| 连山| 抚松县| 吉木乃县| 防城港市| 南靖县| 家居| 信宜市| 大庆市| 象州县| 蒲江县| 平谷区| 栾城县| 尖扎县| 台北市| 天津市| 石屏县| 辉县市| 长葛市| 恩施市| 遵化市| 平泉县| 沛县| 罗甸县| 阳西县| 达州市| 烟台市|