IBOutlet集合发布问题

时间:2011-07-19 15:17:03

标签: iphone arrays release

我有一个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? 没有它,它不会崩溃...

3 个答案:

答案 0 :(得分:2)

更新(Dec1)代码并经过测试。

- (void)dealloc {

    self.buttons = nil;

    [super dealloc];
}

你不应该释放它们。

http://www.bobmccune.com/2011/01/31/using-ios-4s-iboutletcollection/

答案 1 :(得分:0)

如果您使用Interface Builder建立了与按钮的连接,那么您的视图将拥有它并将其发布。

答案 2 :(得分:0)

由于按钮是NSArray并且它被明确保留,因此必须将其释放,然后在-dealloc中设置为nil。

请参阅Darren的回答:Settings IBOutlets to nil in dealloc 请参阅:http://www.bobmccune.com/2011/01/31/using-ios-4s-iboutletcollection/上的IBOutletCollection示例。