gpt4 book ai didi

iOS SDK : ARC removeFromSuperview

转载 作者:行者123 更新时间:2023-11-28 17:38:40 24 4
gpt4 key购买 nike

我有一个关于 ARC 的简单问题。如果用户在 UIViewController 中使用 addSuperView 点击按钮,我会显示一个 UIView。 UIView 包含一个关闭按钮,如果点击我想删除 View 。

我曾经在屏幕外动画 View 后调用 UIViewController 中的方法:

- (void)viewDidClose:(UIView *)view
{
[view removeFromSuperview];
[view release], view = nil;
}

现在使用 ARC 我将其更改为:

- (void)viewDidClose:(UIView *)view
{
[view removeFromSuperview];
view = nil;
}

现在的问题是:我想删除协议(protocol)和对 View Controller 的委托(delegate),并在 UIView 本身中执行此操作。

ARC 前(在 View 内):

- (void)didStop
{
[self removeFromSuperview];
[self autorelease];
}

我不能在 ARC 中使用“autorelease”,也不能设置“self = nil”,据我所知,一旦我将 View 设置为 nil 或替换它,ARC 就会到位,但如果我不这样做会怎样代替它? [view removeFromSuperview] 是否足以处理所有事情或是否存在泄漏?

非常感谢!感谢您的帮助!

最佳答案

(请注意,在您的非 ARC 版本中,您需要在 removeFromSuperview 之前使用 autorelease)。

我也想知道类似的事情。 “危险”是,当您执行 removeFromSuperview 而没有先执行 autorelease 时,对象会立即释放,甚至在方法结束之前。这很滑稽。

我的想法是让方法返回 self。在非 ARC 的情况下,您将使用 autorelease 创建此指针,但 ARC 应该为您做这件事。您可能不需要调用者中的指针,但我相信这会迫使 ARC 执行您想要的操作。

关于iOS SDK : ARC removeFromSuperview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9024048/

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