Objective C 语言 视图控制器生命周期

Objective-C阿木 发布于 2025-06-29 7 次阅读


Objective-C 语言中的视图控制器(ViewController)是iOS开发中非常重要的一个概念,它负责管理用户界面和用户交互。视图控制器生命周期是指从创建到销毁,视图控制器经历的一系列状态变化。了解视图控制器生命周期对于编写高效、健壮的iOS应用程序至关重要。以下是一篇关于Objective-C语言视图控制器生命周期的技术文章,约3000字。

Objective-C 视图控制器生命周期概述

在Objective-C中,视图控制器生命周期可以分为以下几个阶段:

1. 初始化阶段:包括`init`方法和`initWithNibName:bundle:`方法。

2. 加载阶段:包括`loadView`和`loadViewFromNib`方法。

3. 视图配置阶段:包括`viewDidLoad`方法。

4. 视图显示阶段:包括`viewWillAppear`、`viewDidAppear`、`viewWillDisappear`和`viewDidDisappear`方法。

5. 销毁阶段:包括`dealloc`方法。

1. 初始化阶段

初始化阶段是视图控制器生命周期的开始,开发者可以通过重写`init`方法来创建视图控制器实例。

objective-c

@interface ViewController : UIViewController

- (instancetype)initWithNibName:(NSString )nibNameOrNil bundle:(NSBundle )nibBundleOrNil;

@end

@implementation ViewController

- (instancetype)initWithNibName:(NSString )nibNameOrNil bundle:(NSBundle )nibBundleOrNil {


self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];


if (self) {


// 初始化代码


}


return self;


}

@end


如果视图控制器没有自定义的`init`方法,则可以通过`initWithNibName:bundle:`方法来创建实例。

objective-c

ViewController viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];


2. 加载阶段

加载阶段是视图控制器从XIB文件或Storyboard中加载视图的过程。

- XIB文件:如果视图控制器使用了XIB文件,则`loadView`方法会被调用。

objective-c

- (void)loadView {


self.view = [[UIView alloc] initWithFrame:self.view.bounds];


// 初始化视图


}


- Storyboard:如果视图控制器使用了Storyboard,则`loadViewFromNib`方法会被调用。

objective-c

- (void)loadViewFromNib {


self.view = [[[NSBundle mainBundle] loadNibNamed:@"ViewController" owner:self options:nil] objectAtIndex:0];


}


3. 视图配置阶段

视图配置阶段是在视图加载完成后,对视图进行配置的阶段。

objective-c

- (void)viewDidLoad {


[super viewDidLoad];


// 配置视图


}


4. 视图显示阶段

视图显示阶段包括视图即将显示、已显示、即将消失和已消失四个阶段。

- 即将显示:`viewWillAppear`方法在视图即将显示到屏幕上时被调用。

objective-c

- (void)viewWillAppear:(BOOL)animated {


[super viewWillAppear:animated];


// 视图即将显示时的代码


}


- 已显示:`viewDidAppear`方法在视图已经显示到屏幕上时被调用。

objective-c

- (void)viewDidAppear:(BOOL)animated {


[super viewDidAppear:animated];


// 视图已显示时的代码


}


- 即将消失:`viewWillDisappear`方法在视图即将从屏幕上消失时被调用。

objective-c

- (void)viewWillDisappear:(BOOL)animated {


[super viewWillDisappear:animated];


// 视图即将消失时的代码


}


- 已消失:`viewDidDisappear`方法在视图已经从屏幕上消失时被调用。

objective-c

- (void)viewDidDisappear:(BOOL)animated {


[super viewDidDisappear:animated];


// 视图已消失时的代码


}


5. 销毁阶段

销毁阶段是视图控制器生命周期的结束,`dealloc`方法在视图控制器即将被销毁时被调用。

objective-c

- (void)dealloc {


// 清理代码


[super dealloc];


}


总结

本文详细介绍了Objective-C语言中视图控制器生命周期的各个阶段,包括初始化、加载、视图配置、视图显示和销毁阶段。了解视图控制器生命周期对于编写高效、健壮的iOS应用程序至关重要。在实际开发过程中,开发者需要根据具体需求,合理利用视图控制器生命周期的各个阶段,以确保应用程序的性能和稳定性。