У меня есть подкласс UITableViewCell, который падает, когда он попадает в строку [super dealloc]. У меня есть несколько текстовых полей в моей ячейке, и в сообщении об ошибке говорится: *** -[UITextField release]: message sent to deallocated instance 0x739dfd0
Пользовательский UITableViewCell сбой на [super dealloc]
Ниже приведены соответствующие фрагменты кода (у меня есть другие текстовые поля, но все они обрабатываются одинаково). Мое подозрение заключается в том, что это связано с добавлением его в . contentView клетки Но я не знаю, как это исправить
.h файл пользовательского UITableViewCell:.
@interface ExerciseTableViewCell : UITableViewCell {
UITextField *textField1;
}
@property (nonatomic, retain) UITextField *textField1;
@end
.m файл:
@implementation ExerciseTableViewCell
@synthesize textField1;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
UIView *myContentView = self.contentView;
UITextField *newTextField1 = [[UITextField alloc] init];
self.textField1 = newTextField1;
[newTextField1 release];
[myContentView addSubview:textField1];
}
return self;
}
}
- (void)dealloc {
[textField1 release];
[super dealloc];
}
Не могу понять, почему я слишком много раз выпускал textField?
Это утечка. – omz
О! да, спасибо, я отредактировал свой ответ – Charan
Это все равно будет протекать. Когда вы назначаете сохраненное свойство, вы должны либо «autorelease», либо «освобождать» объект после этого, потому что средство настройки уже сохраняет его (то есть, если вы не используете ARC, который OP не). – omz