Objective c 当从navigationController弹出时,UIViewController是否将被释放?

Objective c 当从navigationController弹出时,UIViewController是否将被释放?,objective-c,ios,release,Objective C,Ios,Release,如下代码所示: UIViewController *controller = [[UIViewController alloc] init]; [controller.view addSubView:myOtherController.view]; [self.navigationController pushViewController:controller]; [controller release]; 而myOtherController是一个全局对象,它不会被释放。 所以问题是当控制器

如下代码所示:

UIViewController *controller = [[UIViewController alloc] init];
[controller.view addSubView:myOtherController.view];
[self.navigationController pushViewController:controller];
[controller release];
而myOtherController是一个全局对象,它不会被释放。 所以问题是当控制器弹出时,它是否会被释放? 如果它不会被发布,我如何验证它?
谢谢大家!

它将在弹出时释放
UINavigationController
保留推送的视图控制器,当然,在弹出时释放它们

编辑:对象所有权是一个定向关联,但不是树:对象a拥有对象B,而B可以由任意数量的其他对象拥有

弹出的控制器拥有其视图,而视图又拥有子视图。释放弹出的控制器时,它将释放其视图,该视图将释放共享子视图。共享子视图仍由其他对象拥有,因此不会解除分配


这就是引用计数的概念。

谢谢!但是弹出的控制器有一个子视图尚未释放。我不确定在这种情况下弹出的控制器是否会被释放。那么你能进一步解释吗?非常感谢你!控制器保留其视图,该视图保留其子视图等。。但是视图不保留superview或controller,因此它将被发布。感谢您的解释!