IBOutlet集合释放问题



我有一个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/.

最新更新