iOS开发教程之UIView和UIViewController的生命周期详解

2025-05-29 0 86

前言

iOS开发中,创建View常见的两种方式一个是纯代码,一个是借助于XIB;创建ViewController常见的也有两种方式一个是纯代码,一个是借助于StoryBoard。

通过交流我发现很多童鞋对这些概念都很模糊,于是通过实验写一篇博客供参考。

重写View的如下方法

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
@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的如下方法

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65
@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的生命周期为:

?

1

2

3

4

5
-[YFViewController initWithNibName:bundle:]

-[YFViewController init]

-[YFViewController loadView]

-[YFViewController viewDidLoad]

-[YFViewController viewDidAppear:]

如果创建控制器时勾选了XIB,那么调用方法为[[YFViewController alloc]init]创建VC时的生命周期为:

?

1

2

3

4

5
-[YFViewController initWithNibName:bundle:]

-[YFViewController init]

-[YFViewController loadView]

-[YFViewController viewDidLoad]

-[YFViewController viewDidAppear:]

如果是通过SB创建控制器,那么VC的生命周期为:

?

1

2

3

4

5
-[ViewController initWithCoder:]

-[ViewController awakeFromNib]

-[ViewController loadView]

-[ViewController viewDidLoad]

-[ViewController viewDidAppear:]

如果纯代码创建UIView,调用方式为YFView *yfView = [[YFView alloc]init];那么它的生命周期为:

?

1

2

3
-[YFView initWithFrame:]

-[YFView init]

-[YFView layoutSubviews]

如果纯代码创建UIView,调用方式为YFView *yfView = [[YFView alloc]initWithFrame:[UIScreen mainScreen].bounds];那么它的生命周期为:

?

1

2
-[YFView initWithFrame:]

-[YFView layoutSubviews]

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

?

1

2

3
-[YFView initWithCoder:]

-[YFView awakeFromNib]

-[YFView layoutSubviews]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 iOS开发教程之UIView和UIViewController的生命周期详解 https://www.kuaiidc.com/90243.html

相关文章

发表评论
暂无评论