![](/img/trans.png)
[英]How to remove subviews from UITabbarcontroller view using 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.