如何解决以下代码中的泄漏问题?目标C.

时间:2010-06-25 15:58:42

标签: objective-c memory-leaks nsmutablearray

我在这里发现泄漏,这是在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 个答案:

答案 0 :(得分:3)

您收到报告的泄漏,因为内存管理指南说您应该返回一个自动释放的对象。此外,除非您计划通过out参数提供数据,否则不应将方法名前缀为“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]获得异常,那么你的问题就在其他地方(也许你不应该在其他地方释放数组?)。