可可 - 快速释放所有IBOUtlets

时间:2011-04-01 16:12:02

标签: iphone cocoa-touch

我有一个视图,其中有许多保留的IBOutlet,从XIB加载。

我已经读过,当调用控制器的dealloc方法时必须释放它们。

我可以使用一个循环来执行此操作(也是为了避免单独释放每个插座)?

类似

for(UIView *v in self.view.subviews){
[v release];
v=nil;
}

之后,我也应该发布视图吗?

3 个答案:

答案 0 :(得分:0)

只有你实际上保留了每一个子视图才会有意义,即便如此,它似乎也在寻找麻烦 - 如果你想改变你的.xib,你必须记住将代码更新为好。并且笔尖中可能还有非视图对象可以连接到出口,例如视图控制器。

只有那么多的视图可以放在iPhone或iPad大小的屏幕上,所以很难想象你有超过几十个插座。我认为这里要谨慎的做法就是单独释放每一个。这是iOS开发人员期望看到的,并且它不会比使用循环慢。这将是更多的代码,是的,但代码将很容易理解。

答案 1 :(得分:0)

{p> self.view会在UIViewController解除分配时自动发布,如果您的代码未保留,也会自动发布子视图。

您应该重新阅读Apple文档中的内存管理章节......;)

答案 2 :(得分:0)

我写了一个releaseVars函数,它接受变量的地址,释放它们并设置为nil。这节省了一些代码行,但你仍然必须手动处理它们。