2011-06-16 157 views
1

我來自.NET世界,所以內存管理並不是我過去給出的那麼多。所以,這是我在...的情況下,我有一個搜索數據庫並返回一些數據返回到視圖控制器的方法:CoreData內存管理

- (NSArray *)getSomeData 
{ 
    NSMutableArray *myArray = [[NSMutableArray alloc] init]; 
    //search DB 
    [myArray addObject:@"Here I'm adding some objects"]; 
    return myArray; 
} 

,並在我的視圖控制器我有一個全局變量的NSArray * myGlobalData到女巫添加我的DB數據:

myGlobalData = [DataManager getSomeData]; 

當我與分配或泄漏運行我的應用程序有一個內存泄漏。我怎樣才能避免這種情況?我嘗試autorelease但它沒有幫助。處理init /分配對象返回的標準方式是什麼?

+2

不要調用方法'GET'任何東西;只是叫它'someData'。 「get」具有非常特殊和特殊的含義。 – bbum 2011-06-16 15:32:23

+0

我在我的數據層命名約定中使用了「獲取」和「保存」..我假設你指的是獲取者和設置者,但我只是想澄清一些事情,因爲我是新來的ObjC並想學習儘可能多可能:),我認爲這是一個很好的建議! – paxx 2011-06-17 08:58:13

+0

這很好; 'get'意味着該方法將通過引用返回某些東西,這在Cocoa API中很少見。 – bbum 2011-06-17 15:00:09

回答

1

您需要....

return [myArray autorelease]; 

但要確保你保留你在哪裏使用它的陣列....

+0

所以我用autorelease返回它,然後用self.myGlobalData保留它。然後在unload或dealloc或其他任何地方釋放myGlobalData .. tnx ..我馬上試試 – paxx 2011-06-16 14:09:13