gpt4 book ai didi

ios - UIViewController subview 发布?

转载 作者:行者123 更新时间:2023-12-01 19:14:51 25 4
gpt4 key购买 nike

UIViewController *viewController = [[UIViewController alloc] init];
UIView *view1 = [[UIView alloc] init];
[viewController.view addSubview:view1];
[view1 release];

如果我想释放 viewController;
[viewController release];

我需要在发布 viewController 之前手动发布 view1 吗?
UIView *view = (UIView *)[[viewController.view subviews] objectAtIndex:0];
[view release];
[viewController release];

我应该这样做吗?或者只是释放viewController?

最佳答案

不,你不必那样做。刚刚发布viewController它将释放其所有subviews内部。其余的将由框架处理。

如果您不使用 ARC,您的代码将如下所示,

UIViewController *viewController = [[UIViewController alloc] init];
UIView *view1 = [[UIView alloc] init];
[viewController.view addSubview:view1];
[view1 release];

[viewController release];

既然你已经分配了 viewControllerview1一次,您必须释放一次,如上所示。您不必再次发布,因为您没有执行任何 retain在那之后。

如果你这样做,
UIView *view = (UIView *)[[viewController.view subviews] objectAtIndex:0];
[view release];

viewController 时,它主要会导致崩溃。已发布,因为您要发布它两次并且 viewController's subview 也在内部发布。

在这里您必须注意的是, addSubview保留 view1Apple documentation. 中所述

The view to be added. This view is retained by the receiver. After being added, this view appears on top of any other subviews.



这将发布一次 viewController已发布,您不必手动发布它,因为您不拥有它。

关于ios - UIViewController subview 发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14019973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com