использование специального метода инициализации в iphone - определение утечки

Для одного из моих пользовательских классов я определил метод с именем initialize, чтобы установить некоторые переменные экземпляра одновременно с init. Код ниже. Инструмент анализатора сообщает об утечке в 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;
}

person user542584    schedule 17.05.2011    source источник


Ответы (1)


В вашем viewDidUnLoad вам нужно release сотрудника, прежде чем он будет установлен на nil. Еще в вашем dealloc вы просто выпускаете nil.

ie

- (void)viewDidUnload {
    [super viewDidUnload];
    [employee release];
    employee = nil;
}
person Tom Jefferys    schedule 17.05.2011
comment
Привет, спасибо, но я все еще не могу удалить обнаруженную утечку. Интересно, почему:( - person user542584; 17.05.2011