我有一个.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阶段释放这些内容还不够了解?
即使您没有编写或合成访问器方法,也应该发布IBOutlet .NIB生命周期文档说尽管未归档的对象最初设置为自动释放,但当UIKit挂钩所有IBOutlet连接绑定时,它们的保留计数会增加1.因此,您需要在完成后通过释放手动递减.
UIKit做这件事并不明显,所以你可能会认为你可以放弃setter/getter方法,并相信一切都是自动释放的.但事实并非如此.
请注意,Interface Builder模板显式释放任何IBOutlet,因此您应该同样对待任何添加的IBOutlet.