我会尝试解释自己,我有一个对象Person
和一个PeopleManager
的单个对象NSDictionary *_people
。
_people
是一个字典,用Person
作为关键字保存personId
个对象。
创建人员后,我将其self
添加到_people
词典(Person
init
方法中)
人员字典应该保留person对象,直到该人被dealloc,但问题是如果我在我的代码中的某个地方分配然后释放它,它将不会被释放,因为PeopleManager
仍然存在它在_people字典中。
真正的问题是_people
词典会保留这个人,如果有可能有一个分配词典就会很棒,但我知道这是不可能的。
我该怎么做才能解决这个问题?
答案 0 :(得分:3)
字典必须保留人,因为它正在使用它。如果没有发生这种情况,则无法保证字典中的对象始终存在。
当您释放Person时,您根本不再需要它并期望它被释放,请通过[NSMutableDictionary -removeObjectForKey:]
将其从字典中删除(从而减少保留计数)。这将需要使用NSMutableDictionary,因为您无法从NSDictionary中删除对象。
答案 1 :(得分:1)
如果您使用NSDictionary的可变对应物,您将能够使用简单的-removeObjectForKey: