在我的iPhone / iPad应用中,
我在主视图中添加了一个子视图。
此子视图有一个图像视图和按钮。
何时发布?
我的代码在这里,
customAlertView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 600, 600)];
UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"celebration.png"]];
UIButton *btnOK=[UIButton buttonWithType:UIButtonTypeCustom];
[btnOK setTitle:@"OK" forState:UIControlStateNormal];
[btnOK addTarget:self action:@selector(alertOKClicked) forControlEvents:UIControlEventTouchUpInside];
[customAlertView addSubview:btnOK];
[customAlertView addSubview:imgv];
[self.view addSubview:customAlertView];
[imgv release];
[btnOK release];
In one another method I am writing the code.
[customAlertView removeFromSuperview];
我的困惑是imageview,按钮就在那里
如果没有如何释放它
正如我在此处所做的那样,在添加子视图后立即释放了对象。 它会导致我的OK按钮不值得。并且不会影响按钮的点击。
所以,我应该写一下从superview中删除。
[[customalertview subviews] release];
答案 0 :(得分:2)
您的代码是正确的。
在将它们添加到警报视图后释放它们,因为警报视图会保留它们。当您致电removeFromSuperview
时,它会自动释放。
答案 1 :(得分:2)
根据您对现有答案的评论,我认为您缺少的要点如下:
尽快启用ARC。
答案 2 :(得分:1)
你正在以正确的方式做到这一点。 customalertview将自动发布其子视图。
当释放计数变为0时,您的对象将被释放,这意味着在理论中,如果编码良好,则此对象不再具有任何引用。
当您在视图中维护自定义alertView时,您有一个保留您的东西的对象,因此在您删除customAlertView之前,释放计数不会为0,因为您已将它们添加到customAlertView,并且当您删除警报时,警报将被释放,它保留的所有东西也将被释放。
希望它能帮助您了解事情是如何运作的。
如果您想了解有关内存管理的更多信息,可以查看Apple文档here
修改强>
我忘了提到你删除后也需要释放自定义提醒。
如果您不了解内存管理,您还可以查看:http://cocoadevcentral.com/d/learn_objectivec/第7节