Objective c - NSDictionary保留对象问题

时间:2012-05-27 14:13:05

标签: iphone objective-c nsdictionary dealloc retaincount

我会尝试解释自己,我有一个对象Person和一个PeopleManager的单个对象NSDictionary *_people_people是一个字典,用Person作为关键字保存personId个对象。

创建人员后,我将其self添加到_people词典(Person init方法中)

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

真正的问题是_people词典会保留这个人,如果有可能有一个分配词典就会很棒,但我知道这是不可能的。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:3)

字典必须保留人,因为它正在使用它。如果没有发生这种情况,则无法保证字典中的对象始终存在。

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

答案 1 :(得分:1)

如果您使用NSDictionary的可变对应物,您将能够使用简单的-removeObjectForKey:

删除不再使用的对象