2010-06-25 101 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