2010-06-25 102 views
1

我到这儿泄漏这是写在appDelegate.m如何解决下面代码中的泄漏?的ObjectiveC

-(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

你如何使用'-getSalutationList'的返回值? – kennytm 2010-06-25 16:00:15

+0

listformAppdelegate = [appDelegate getSalutaionList];并且此列表用于显示View Controller中的内容。 – 2010-06-26 05:27:54

回答

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]得到一个异常,那么你的问题出在其它地方(也许你正在释放数组别的地方的时候,你不应该是什么? )。

+0

它是在本地声明的,不会在任何地方发布。是否有可能发布主列表并返回temperory列表 – 2010-06-26 05:35:39