използване на персонализиран init метод в 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