【发布时间】:2011-02-20 02:56:23
【问题描述】:
作为后续的澄清问题:
What exactly must I do in viewDidUnload? When should I release objects in -(void)viewDidUnload rather than in -dealloc?
假设存在内存不足错误,并且视图被隐藏,并且调用了 viewDidUnload。我们做释放和零舞。后来不需要整个视图堆栈,所以调用了dealloc。因为我已经在 viewDidUnload 中有 release 和 nil 的东西,所以我在 dealloc 中没有它。完美。
但如果没有内存不足错误,则永远不会调用 viewDidUnload。调用了 dealloc,由于我没有 release 和 nil 的东西,所以存在内存泄漏。
换句话说,是否会在没有先调用 viewDidUnload 的情况下调用 dealloc?
实际的后续行动是,如果我在 viewDidLoad 中分配和设置某些东西,然后在 viewDidUnload 中释放它并设置为 nil,我是将其排除在 dealloc 之外,还是在 dealloc 中进行防御性 nil 检查如果不是 nil 则释放/nil?
【问题讨论】:
-
你知道你可以发送 nil 发布消息没问题,对吧? nil 只是忽略发送给它的所有消息并返回 nil 作为它的值而没有错误。不需要像 NULL 那样对 nil 进行防御性检查
标签: iphone objective-c memory-management