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

首頁 > 系統 > iOS > 正文

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

2020-07-26 02:28:33
字體:
來源:轉載
供稿:網友

前言

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]

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷州市| 工布江达县| 桐庐县| 商南县| 静安区| 原阳县| 政和县| 都安| 志丹县| 巴青县| 遵化市| 叙永县| 和政县| 陇川县| 吴堡县| 临桂县| 张北县| 延庆县| 田东县| 翁牛特旗| 江城| 庆城县| 庆元县| 吉木萨尔县| 丹江口市| 灵台县| 鄂托克旗| 淳安县| 宁安市| 盘锦市| 丽水市| 皋兰县| 商河县| 永定县| 景宁| 孝感市| 乌什县| 盐山县| 五大连池市| 田东县| 德江县|