2012-05-27 72 views
2

我會盡力解釋我自己,我有一個對象Person和一個單一對象PeopleManagerNSDictionary *_people
_people是一個字典,它包含Person對象,其中personId爲關鍵字。客觀c-NSDictionary保留對象問題

當一個人創造了我它(self)添加到_people字典(在Personinit法)

人民字典應該持有人的對象,直到這個人的dealloc,但問題是,如果我將代碼分配給我的代碼中的某個地方,然後釋放它,它不會得到dealloc,因爲PeopleManager仍然將它保存在_people字典中。

真的問題是,_people字典保留的人,如果有可能有一個分配字典,這將是偉大的,但我知道這是不可能的。

我能做些什麼來解決這個問題?

+0

你是如何將對象添加到一個NSDictionary對象?它是不可變的,因此不能被修改。 –

回答

3

字典必須保留人,因爲它正在使用它。如果這沒有發生,字典不能保證它的對象總是活着。

當你釋放Person時,你完全不再需要它,並且期望它被解除分配,通過[NSMutableDictionary -removeObjectForKey:](從而減少保留計數)將它從字典中移除。這將需要使用NSMutableDictionary,因爲你不能從NSDictionary中刪除對象。

1

如果您使用的NSDictionary的可變對手,你就可以刪除則傳遞出使用一個簡單的-removeObjectForKey: