在removeFromSuperview崩溃应用程序后释放UIView [英] Releasing a UIView after removeFromSuperview crashes app

查看:153
本文介绍了在removeFromSuperview崩溃应用程序后释放UIView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 UIView 对象,我使用 [self.view addSubview:mySubView]将其添加为子视图; 。之后我调用
[mySubView removeFromSuperview]; 然后我尝试做 [mySubView release]; 但是应用程序崩溃。

I have a UIView object and I add it as a subview it using [self.view addSubview:mySubView];. Afterwards I call [mySubView removeFromSuperview]; and then I try to do [mySubView release]; but app crashes here.

RemoveFromSuperview 还调用 release mySubView

推荐答案

请发布您的代码,否则很难回答

Please post your code, else its difficult to answer

崩溃代码

UIView *subview = [[UIView alloc] init]; //manual allocation
[self.view addSubView:subview]; //view retained automatically
[subview release]; //released the manual allocated memory

for(UIView *subview in [scrollView subviews]) {    

    [subview removeFromSuperview]; //released the view retained automatically. Now retain count reach 0/
   [subview release]; // crash.....
}

没有崩溃的代码

UIView *subview = [[UIView alloc] init]; //manual allocation
[self.view addSubView:subview]; //view retained automatically   

[subview removeFromSuperview]; //released the view retained automatically. Now retain count reach 1

[subview release]; // No crash .retain count reach 0

你根本不发布你没有明确分配的东西或保留自己。

You simply do not release things that you have not explicitly allocated or retained yourself.

这篇关于在removeFromSuperview崩溃应用程序后释放UIView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆