objective-c – Interface Builder将控制插座设置为nil – 为什么?

使用xcode 4.2 for iPhone app,不用ARC —

当我使用界面构建器创建一个插座时,xcode会在我的viewController中添加两行代码.一个在viewDidUnload中: – [self setMyOutlet:nil]和dealloc中的第二个 – [myOutlet release].

我理解后者(发布).但是为什么在viewDidUnload中将插座设置为nil.是不是在dealloc之前调用viewDidUnload并且不会将出口设置为nil否定dealloc中的释放操作?设置为nil有意义我会考虑构建一个使用垃圾收集的Mac应用程序 – 但它对iPhone应用程序没有意义.

为什么界面构建器会这样做?我应该删除将出口设置为零的行吗?

最佳答案
可以调用viewDidUnload,也可以不调用它.这取决于当前的内存使用情况. dealloc是一个你应该清理所有属性的地方(比如数组,自定义对象).在viewDidUnload中,您可以清理视图以及为支持视图而创建的对象. viewDidUnload意味着您的视图被卸载(但不是整个视图控制器),并且可能在将来再次创建和加载(当然在viewDidLoad中).

>为什么没有 – Objective-C Difference between setting nil and
releasing

> Understanding How Views Are Loaded and
Unloaded

转载注明原文:objective-c – Interface Builder将控制插座设置为nil – 为什么? - 代码日志