gpt4 book ai didi

ios - 什么时候使用 removeFromSuperview?

转载 作者:行者123 更新时间:2023-11-28 18:37:50 27 4
gpt4 key购买 nike

我在用 Objective-C 编程对象时有一个小问题。我有一个即将完成的应用程序,一切正常。我的问题是我将我的对象设置为 nil 并在适当的时候释放它们。

但这足够了吗?我应该在何时何地使用 removefromsuperview?

在将 UIButton 添加到 UITableViewCell 的情况下,我使用以下代码添加 UIButton:

UIButton *buttonReset = [UIButton buttonWithType:UIButtonTypeContactAdd];
buttonReset.frame = CGRectMake(250.0f, 7.0f, 75.0f, 30.0f);
[cell addSubview:buttonReset];
buttonReset addTarget:self action:@selector(resetSettings) forControlEvents:UIControlEventTouchUpInside];
buttonReset = nil;
[buttonReset release];

我还需要用吗

[buttonReset removeFromSuperview];

在这种情况下?

最佳答案

buttonReset = nil;
[buttonReset release];

这没有意义。您将指针设置为 nil(空指针),然后向其发送消息。在大多数其他语言中,这会导致崩溃。在 Objective-C 中是允许的,但什么也不会发生。在设置为 nil 之前,您必须先 release。但是在这种情况下你不应该两者都不做,因为 buttonReset 是一个自动释放的对象(你没有使用 alloc/init 来创建它),所以你不拥有它,因此你不能释放它。

在这种情况下,您也不必使用 removeFromSuperview。您将一个按钮(一个 subview )添加到您的单元格( super View )。 super View 将持有按钮的强(保留)引用。然后释放单元格时,它还将处理其所有 subview 。只有当您真正想要这样做时,您才需要自己删除它,而不是出于内存管理原因。

如果您还不知道,您可能需要考虑使用 Automatic Reference Counting (ARC) future 。

关于ios - 什么时候使用 removeFromSuperview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15766949/

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