首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跟进viewDidUnload与dealloc问题

跟进viewDidUnload与dealloc问题
EN

Stack Overflow用户
提问于 2010-05-16 23:48:49
回答 1查看 3K关注 0票数 7

作为后续问题的澄清问题:

What exactly must I do in viewDidUnload? When should I release objects in -(void)viewDidUnload rather than in -dealloc?

因此,假设有一个内存不足的错误,视图被隐藏,并且调用了viewDidUnload。我们做释放和零舞蹈。之后不再需要整个视图堆栈,因此调用dealloc。因为我在viewDidUnload中已经有了发行版和零的东西,所以我没有在dealloc中使用它。太完美了。

但是如果没有低内存错误,viewDidUnload就永远不会被调用。dealloc被调用,因为我没有释放和nil的东西,所以有一个内存泄漏。

换句话说,在不先调用viewDidUnload的情况下,dealloc会被调用吗?

实际的后续工作是,如果我在viewDidLoad中分配并设置了一些东西,然后在viewDidUnload中释放它并将其设置为零,我是不是把它留在dealloc之外,还是在dealloc中做一个防御性的nil检查,如果它不是nil,就释放/ nil它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-16 23:55:35

在这两个地方释放它。您不需要检查nil。在nil上释放不会做任何事情。

但是,在viewDidUnload中不要释放在viewDidLoad中不容易重新创建的ivar,以防视图再次加载。

正常情况下(没有内存警告) viewDidUnload不会被调用,只会调用dealloc。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2844348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档