如果您担心UIViewController是如何释放或销毁的,那么这里有一个适合您的场景:-
这是FirstViewController中呈现SecondViewController的按钮点击方法(使用 pushViewController、presentModalViewController 等)
在 FirstViewController.m 文件中
- (IBAction)btnTapped {
SecondViewController * secondView = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
NSLog(@"Before Present Retain Count:%d",[secondView retainCount]);
[self presentModalViewController:secondView animated:YES];
NSLog(@"After Present Retain Count:%d",[secondView retainCount]);
[secondView release]; //not releasing here is memory leak(Use build and analyze)
}
现在在 SecondViewController.m 文件中
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"View Load Retain Count %d",[self retainCount]);
}
- (void)dealloc {
[super dealloc];
NSLog(@"View Dealloc Retain Count %d",[self retainCount]);
}
运行代码后:
推送前保留计数:1
查看加载保留计数 3
推送后保留计数:4
查看 Dealloc 保留计数 1
如果您正在分配和初始化 ViewController,您是其生命周期的所有者,您必须在push 或 modalPresent之后释放它。在上面的输出中,在分配初始化时, SecondViewController 的保留计数是一个,但在逻辑上它的保留计数仍然是一个,即使它已经被释放(参见 dealloc 方法),所以需要在 FirstViewController 中释放以完全销毁它.