2

我会试着解释一下自己,我有一个对象Person和一个PeopleManager带有NSDictionary *_people.
_people是一个字典,它保存Person带有personIdas 键的对象。

创建一个人时,我将它 ( self) 添加到_people字典中(在Person init方法中)

people 字典应该保存 person 对象,直到 person 被 dealloc,但问题是如果我在代码中的某个地方分配 person 然后释放它,它不会得到 dealloc,因为PeopleManager它仍然保存在 _people 字典中。

真正的问题是_people字典保留了这个人,如果有可能有一个分配字典那就太好了,但我知道这是不可能的。

我能做些什么来解决这个问题?

4

2 回答 2

3

字典必须保留人员,因为它正在使用它。如果这没有发生,字典就不能保证它的对象总是还活着。

当您释放 Person 时,您根本不再需要它并期望它被释放,通过[NSMutableDictionary -removeObjectForKey:](并因此减少保留计数)将其从字典中删除。这将需要使用 NSMutableDictionary,因为您无法从 NSDictionary 中删除对象。

于 2012-05-27T14:15:46.817 回答
1

如果您使用 NSDictionary 的可变对应物,您将能够通过一个简单的方法删除已停用的对象-removeObjectForKey:

于 2012-05-27T14:17:36.313 回答