为什么我们需要(void)viewDidUnload和(void)dealloc {

时间:2011-04-27 11:08:12

标签: objective-c xcode dealloc

何时卸载视图但尚未解除分配?

为什么我们在viewDidUnload中做

self.member = nil;

在dealloc我们做

[会员发布]

他们做了几乎相同的事情,但为什么我们在viewDidUnload中执行一个而在dealloc中执行另一个?

3 个答案:

答案 0 :(得分:1)

当您的应用收到内存警告时,会调用viewDidUnload。 您必须释放所有可在loadView或viewDidLoad中重建的保留视图。

答案 1 :(得分:0)

我不认为您应该这样做,因为当您使用nil方法发送release消息时,成员将为dealloc,因此原始member会泄漏。

答案 2 :(得分:0)

在卸载视图时调用viewDidUnload(因此名称),并且用于卸载使用loadView或者viewDidLoad加载的所有内容,以便在内存资源稀疏时释放内存。系统为您提供了释放资源的机会,以后可以使用viewDidLoad / loadView再次加载这些资源。通常,您可以释放在viewDidLoad或NIB上创建的每个可视组件或层次结构。但是,您将保留您的数据,并且只释放无法自动获取的资源(viewidLoad,loadView或任何您自己的缓存机制)。 在dealloc中,您释放您的类保留的所有内容