我有一个IBOutlet集合数组
. h
@interface UpisiRezultat : UIViewController {
NSArray *buttons;
}
@property (nonatomic, retain) IBOutletCollection(UIButton) NSArray *buttons;
m
@synthesize buttons;
- (void)viewDidLoad
{
[self setValue:[UIFont fontWithName:@"NeverSayNever" size:22] forKeyPath:@"buttons.font"];
[super viewDidLoad];
}
- (void)viewDidUnload
{
buttons = nil;
}
- (void)dealloc
{
[buttons release]; --> Error
[super dealloc];
}
为什么我的程序崩溃时,我有[按钮释放];在dealloc吗?
更新的(Dec1)代码和测试。
- (void)dealloc {
self.buttons = nil;
[super dealloc];
}
你不应该释放他们。
http://www.bobmccune.com/2011/01/31/using-ios-4s-iboutletcollection/如果你用Interface Builder连接了你的按钮,它是你的视图,拥有它并将释放它
由于buttons是一个NSArray,并且它被显式保留,那么它必须被释放,然后在-dealloc中设置为nil。
参见Darren的回答:在dealloc中设置IBOutlets为nil参见IBOutletCollection示例:http://www.bobmccune.com/2011/01/31/using-ios-4s-iboutletcollection/.