【发布时间】:2012-03-13 10:15:41
【问题描述】:
我仍然对 ARC 的想法有些挣扎。假设我有两个非常复杂的视图控制器 A 和 B,每个视图控制器中都有很多图片,每个视图都保留了这些图片。为了论证的缘故,我们假设第一个 ViewController (A) 保留了占用 75 MB RAM 的图像。另一个 (B) 也占用 75 MB。
在我的 App Delegate 中,我这样设置 NavigationController:
ViewControllerA *vcA = [[ViewControllerA alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vcA];
[navController.navigationBar setHidden:YES];
[[self window] setRootViewController:navController];
当我从 A 切换到 B 时,我在 ViewControllerA.m 中这样做:
ViewControllerB *vcB = [[ViewControllerB alloc] init];
[[self navigationController] pushViewController:vcB animated:YES];
当我切换回来时,我会在 ViewControllerB.m 中这样做:
[[self navigationController] popToRootViewControllerAnimated:YES];
现在我最大的问题是,当我在 ViewController B 中时,我的内存中是否还有 ViewController A?在这种情况下,编译器什么时候释放一个 ViewController?我可以或应该在不使用时释放(即设置为零)一个 ViewController 吗?
如果答案很明确或者我完全没有抓住重点,我很抱歉。因此,任何答案和解释都将受到高度赞赏。
【问题讨论】:
标签: iphone objective-c ios5 automatic-ref-counting