IOS应用程序生命周期-UIViewController的生命周期
UIViewController是连接Model和View的Bridge,了解它的生命周期至关重要。知道了什么时候执行哪个方法,才会知道该在哪个方法里做什么事。
下面是UIViewController的生命周期方法:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
{
NSArray *array;
}
- (id)init
{
self = [super init];
if (self) {
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
return self;
}
- (void)loadView
{
[super loadView];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
- (void)viewDidLoad
{
[super viewDidLoad];
array = [[NSArray alloc] initWithObjects:@"11", @"2", nil];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
self.view.backgroundColor = [UIColor whiteColor];
}
- (BOOL)isViewLoaded
{
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
return [super isViewLoaded];
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
- (void)dealloc
{
array = nil;
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
CLog(@"%@: %@", NSStringFromSelector(_cmd), self);
}
@end
第一次启动应用程序时,打印出的LOG:
点击Button后进入第二个页面,打印出的LOG:
回退到一个页面,打印出的LOG:
在内存不紧张的情况下:
按HOME键返回主界面,没有打印LOG;
第二次进入应用,没有打印LOG