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