2011-06-08 53 views
6

我在類方法用於測試以下代碼:NSMutableDictionary內容發佈?

NSMutableDictionary * temp = [[NSMutableDictionary alloc] init]; 
[temp setObject:@"4" forKey:@"Interval"]; 
interval = [temp objectForKey:@"Interval"]; 
[temp release]; 

間隔是我的實例變量:

NSString * interval; 

和getter方法爲它(它不是屬性):

- (NSString *) getInterval { 
    return interval; 
} 

在其他一些類中,我嘗試使用像這樣的getInterval方法:

NSString * test = [MyObject getInterval]; 

getInterval返回正確的4值,我在調試器中看到它。我不明白,因爲,據我所知,指向間隔實例變量的指針應該是免費的,用NSMutableDictionary temp。爲什麼會發生?

回答

8

@"4"是文字/恆NSString對象和文字/恆NSStrings從不釋放 - 這就是爲什麼你仍然可以參考即使理論上已發佈的字符串(假設詞典是唯一的擁有者)。

這並不意味着你不應該遵循正確的內存管理規則,當然。如果你想保留interval那麼你應該保留或複製它,可能通過聲明的屬性。