Как освободить локально созданный объект, используя его как возвращаемый объект - PullRequest
0 голосов
/ 05 июня 2011

В моем pgm я получаю предупреждение об утечке в этом сегменте.

- (NSMutableArray *) filterArrayForBank: (NSMutableArray *) originalArray withKey: (NSString *) key { NSMutableArray * mutableArray = [[NSMutableArray alloc] init];

for (int i=0; i<[originalArray count]>0; i++) {
    if([[[originalArray objectAtIndex:i]objectForKey:@"transType"] isEqualToString:key]){
        [mutableArray addObject:[originalArray objectAtIndex:i]];
    }
}
//////NSLog(@"mutableArray %@",mutableArray);
       return mutableArray ;

}

если я заблокирую эту утечку ниже строки, приложение получит сбой

либо return [автосохранение mutableArray];

или

NSMutableArray * mutableArray = [[[NSMutableArray alloc] init] autorelease];

Пожалуйста, помогите мне остановить эту утечку. заранее спасибо.

1 Ответ

1 голос
/ 05 июня 2011

Если вы возвращаете автоматически выпущенный массив, вам нужно убедиться, что вы сохранили его в методе вызывающего. Однако, если вы не сохраните его в методе вызывающего, попробуйте переименовать метод в:

-(NSMutableArray *)newFilterArrayForBank:(NSMutableArray *)originalArray withKey:(NSString *)key

Это уведомит компилятор о том, что вы выделяете новый NSMutableArray.

...