繁体   English   中英

Objective-C在子视图数组中跟踪我的视图

[英]Objective-C keep track of my view in subviews array

我有一个关于内存管理的问题。 例如,我有一个iPhone应用程序,它使用以编程方式创建的多个视图。 例如以编程方式生成的按钮。

    UIButton *myButton=[UIButton alloc] initWithFrame:...; //etc

然后,通常我们将此按钮添加到subviews数组中:

    [self.view addSubview:myButton];

然后我们释放按钮。

    [myButton release]

当我需要删除此按钮时,如何在子视图数组中跟踪该按钮? 我知道我可以使用标签属性来做到这一点,但我认为存在另一种保持联系的方式。

您可以简单地将其分配给实例变量:

UIButton *myButton = ...;
[self.view addSubView:myButton];
myInstanceVariable = myButton;
[myButton release];

您只需要小心:只要执行[myInstanceVariable removeFromSuperview]; 它可能会立即被释放(如果您尚未保留),然后它将指向无效的内存。

您可以尝试在某处声明UIButton*类型的保留属性,该属性可以使用指向按钮实例的指针值进行分配:

@interface myclass
@property (retain, nonatomic) UIButton *savedButton;
@end

@implementation myclass
@synthesize savedButton;

- (void) someMethod...
{
  ...
  UIButton *myButton=[UIButton alloc] initWithFrame:...;
  [self.view addSubview:myButton];
  self.savedButton = myButton;
  [myButton release];
  ...
}
...
@end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM