Как устранить утечки в следующем коде? ObjectiveC - PullRequest
1 голос
/ 25 июня 2010

Я получаю утечку, которая написана в appDelegate.m

-(NSMutableArray*)getSalutationList
{
    NSMutableArray *list=[[NSMutableArray alloc]init];
    [list addObject:@"Dr."];
    [list addObject:@"Mr."];
    [list addObject:@"Mrs."];
    [list addObject:@"Miss."];
    [list addObject:@"Ms."];
    return list;    //return [list autorelease]; if i keep this  i am getting exception.
}

Как освободить список, а также мне нужен контент, который я вызываю из контроллера представления.

1 Ответ

3 голосов
/ 25 июня 2010

Вы получаете сообщение об утечке, потому что в руководствах по управлению памятью говорится, что вы должны возвращать объект с автоматическим освобождением.Кроме того, вы не должны ставить перед именем метода префикс «get», если только вы не планируете предоставлять данные через выходной параметр.

Таким образом, ваш метод должен быть:

-(NSMutableArray*) salutationList {
    NSMutableArray *list=[[NSMutableArray alloc]init];
    [list addObject:@"Dr."];
    [list addObject:@"Mr."];
    [list addObject:@"Mrs."];
    [list addObject:@"Miss."];
    [list addObject:@"Ms."];
    return [list autorelease];
}

Если вы получаете исключение, возвращая [list autorelease], то ваша проблема кроется в другом месте (возможно, вы освобождаете массив где-то еще, когда этого не должно быть?).

...