2012-08-06 32 views
0

我加載字典從的.plist這樣的:我應該釋放添加到從文件初始化的字典中的對象嗎?

switches = [NSMutableDictionary dictionaryWithContentsOfFile: 
        [[NSBundle mainBundle] pathForResource:@"Switches" ofType:@"plist"]]; 
[switches retain]; 

現在我需要添加一個新的條目(這是另一個字典)給它。要創建字典並添加它,我這樣做:

NSMutableDictionary *newObject = [[NSMutableDictionary alloc]init]; 
    [switches setObject:newObject forKey:@"MyNewObject"]; 

我必須發佈newObject?我的意思是,我認爲switches無論如何都會照顧它,對吧?

回答

2

是的,你應該在將它添加到字典後釋放newObject。由於詞典將+1按鈕添加到保留計數,當你用「黃金」爲對象的初始化的一部分,你已經有1

NSMutableDictionary *newObject = [[NSMutableDictionary alloc]init]; 
    [switches setObject:newObject forKey:@"MyNewObject"]; 
[newObject release]; 

NSMutableDictionary *newObject = [[[NSMutableDictionary alloc]init]autorelease]; 
    [switches setObject:newObject forKey:@"MyNewObject"]; 

一個保留計數或

NSMutableDictionary *newObject = [NSMutableDictionary dictionary]; 
    [switches setObject:newObject forKey:@"MyNewObject"]; 

也是可以接受

1

詞典保留你放入它們的對象(所有的可可收藏都這麼做),所以你需要釋放newObject

另外,您可以創建爲自動釋放的對象,像這樣:

NSMutableDictionary *newObject = [NSMutableDictionary dictionary]; 

這樣你就不會需要釋放newObject明確。

相關問題