如何在使用返回对象时释放本地创建的对象

时间:2011-06-05 08:17:11

标签: objective-c ios memory-management memory-leaks

在我的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 autorelease];

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

请帮助我阻止这种泄漏。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果返回自动释放的数组,则需要确保将其保留在调用方法中。但是,如果您未将其保留在调用方法中,请尝试将该方法重命名为:

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

这将通知编译器您正在分配新的NSMutableArray。