我是否必须在 - (void)viewDidUnload中释放IBOutlets?

时间:2009-07-18 21:10:02

标签: iphone cocoa-touch uikit

他们说:

  

//释放任何保留的子视图   主要观点。 //例如self.myOutlet =   无;

我以前从未见过这个。所以我想知道他们是否在这里谈论笔尖?

2 个答案:

答案 0 :(得分:2)

类似于init中您分配的任何内容应该在dealloc中未分配。

如果您在viewDidLoad中分配内存,则应在viewDidUnload中发布。

将nib文件带入图片时,问题会变得混乱。如果您手动加载nib文件,则应手动将其卸载并将所有IBOutlets设置为nil。

答案 1 :(得分:1)

如果有理由保留它,则不必如此,但假设您需要通过插座访问实体,如果视图已被拆除,那么您应该释放。否则,即使nib本身已被卸载,您的视图控制器也会声明对所有IBOutlet的保留,这样就可以防止它们被解除分配。由于这些对象可能具有纹理并支持它们,因此iPhone使用主ram进行视频处理,可以非常快速地添加大量浪费的内存。

此外,如果再次调用viewDidLoad,则在重新加载nib时将创建一个新对象并将其分配给该出口,因此如果您在其他任何地方使用它(将其他对象中的属性设置为IBOutlet指向的对象) )那么你的应用可能会以不一致的状态结束。