#iphone #memory-leaks #init
#iPhone #утечки памяти #инициализация
Вопрос:
Для одного из моих пользовательских классов я определил метод с именем initialize для установки некоторых переменных экземпляра одновременно с инициализацией. Код приведен ниже. Инструмент анализатора сообщает об утечке в viewDidLoad в строке с [[employee alloc].. Поскольку я освобождаю переменную в dealloc, я подумал, что это должно быть нормально..в чем может быть проблема? заранее спасибо.
@interface testViewController : UIViewController <UITextFieldDelegate>{
Employee *employee;
}
- (void)viewDidLoad {
if(employee ==nil)
employee = [[Employee alloc] initialize:@"John"];
if (![employee.entityName isEqualToString:@"Test"]) { //The leak is reported here for object allocated above
///...
}
}
- (void)viewDidUnload {
[super viewDidUnload];
employee = nil;
}
- (void)dealloc {
[super dealloc];
[employee release];
}
//In the Employee class
-(id) initialize:(NSString*) name{
self = [super init];
self.entityName = name;
return self;
}
Ответ №1:
В вашем, viewDidUnLoad
вам нужно release
employee, прежде чем для него будет установлено значение nil
. В противном случае в вашем dealloc
вы просто выпускаете nil
.
ie
- (void)viewDidUnload {
[super viewDidUnload];
[employee release];
employee = nil;
}
Комментарии:
1. Привет, спасибо, но я все еще не могу устранить обнаруженную утечку. интересно, почему: (