如下代码:
UIViewController *controller = [[UIViewController alloc] init];
[controller.view addSubView:myOtherController.view];
[self.navigationController pushViewController:controller];
[controller release];
myOtherController是一个全局对象,它不会被释放。 所以问题是当控制器弹出时,它是否会被释放? 如果它不会被释放,我该如何验证呢? 谢谢!
答案 0 :(得分:2)
弹出时会释放。 UINavigationController
保留推送的视图控制器,当然,弹出时会释放它们。
编辑:对象所有权是有向关联,但不是树:对象A拥有对象B,而B可以由任意数量的其他对象拥有。
弹出的控制器拥有其视图,而视图又拥有子视图。当弹出的控制器被释放时,它会释放其视图,从而释放共享的子视图。共享子视图仍然由其他一些对象拥有,因此它不会被释放。
这就是引用计数的想法。