开发者

cocoa - quickly release all IBOUtlets

I have a view with many retained IBOutlets, loaded from a XIB.

I have read that they have to be released when the controller's dealloc method is called.

May I use a cycle to do this(also to avoid releasing each outlet separately)?

som开发者_如何学Cething like

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

?

also, after that, should I release the view as well?


That would only make sense if you've actually retained every single subview, and even then it seems like asking for trouble -- if you ever wanted to change your .xib, you'd have to remember to update you code as well. And there may also be non-view objects in a nib that can be connected to outlets, like view controllers.

There are only so many views you can fit on an iPhone- or iPad-sized screen, so it's hard to imagine that you have more than a few dozen outlets. I think the prudent thing to do here is to simply release each one separately. This is what and iOS developer would expect to see, and it won't be any slower than using a loop. It'll be more code, yes, but the code will be easy to understand.


self.view is automatically released on UIViewController deallocation, and subviews also, if not retained by your code.

You should re-read the chapter on memory management in Apple Documentation... ;)


I wrote like a releaseVars function, which takes address of variables, release them and set to nil. This save some lines of code, but still you have to manually take care of them.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜