ios - 什么时候使用 removeFromSuperview?

标签 ios objective-c

我在用 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/

相关文章:

ios - iPad 上的键盘高度不正确

ios - 滚动后自定义 TableView 单元格中的标签消失

iphone - 如何将我的应用程序中的联系人添加到 iOS 通讯录

ios - 创建 UIImage 时 Malloc 崩溃?

ios - 在 View 中动态添加多行标签

iphone - UIWebView 可在 Safari 中打开 URL,但不能打开以 # 开头的 URL

android - App Store 或 Google Play 应用程序的加密和导出许可证

ios - 使用触控 iOS 在视频上移动叠加层

iphone - 有没有办法在 UIImage 中制作超越图像堆栈的动画?

ios - 在 UINavigationController 中的 UIViewController 之间创建父/子关系?