当前位置:  开发笔记 > 编程语言 > 正文

使用loadNibNamed:方法时是否需要释放IBOutlets?

如何解决《使用loadNibNamed:方法时是否需要释放IBOutlets?》经验,为你挑选了1个好方法。

我有一个.xib文件包含一个UIView和2个UILabel子视图链接到一个名为Note的类,其中适当地分配给每个标签的出口,该类的定义包含以下内容.

@interface Note : UIView {
    IBOutlet UILabel *time;
    IBOutlet UILabel *content;
}

我正在使用以下代码构建它

NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"Note" owner:self options:nil];
note = [nibViews lastObject];
[self addSubview:note];

现在,在我的Note类dealloc阶段,我没有发布任何时间或内容,但我想知道我是否应该?

- (void)dealloc {
    [super dealloc];
}

我假设我没有,因为我没有在我的代码中的任何地方明确地保留这些对象,并且我没有将它们合成到getter/setter中.但是我对nib unarchiving知道我是否应该在我的dealloc阶段释放这些内容还不够了解?



1> pioneer78..:

即使您没有编写或合成访问器方法,也应该发布IBOutlet .NIB生命周期文档说尽管未归档的对象最初设置为自动释放,但当UIKit挂钩所有IBOutlet连接绑定时,它们的保留计数会增加1.因此,您需要在完成后通过释放手动递减.

UIKit做这件事并不明显,所以你可能会认为你可以放弃setter/getter方法,并相信一切都是自动释放的.但事实并非如此.

请注意,Interface Builder模板显式释放任何IBOutlet,因此您应该同样对待任何添加的IBOutlet.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有