我会尝试解释一下自己,我有一个对象 Person
和一个单例对象 PeopleManager
,它有一个 NSDictionary *_people
。< br/>
_people
是一个字典,其中包含以 personId
作为键的 Person
对象。
当一个人被创建时,我将它(self
)添加到_people
字典中(在Person
init
方法)
人员字典应该保存人员对象,直到人员被释放为止,但问题是,如果我在代码中的某个位置分配人员然后释放它,它将不会被释放,因为 PeopleManager
仍然保留在 _people 字典中。
真正的问题是 _people
字典保留了 person,如果可以有一个分配字典那就太好了,但我知道这是不可能的。
我该如何解决这个问题?
最佳答案
字典必须保留 person,因为它正在使用 person。如果没有发生这种情况,字典就无法保证它的对象始终保持事件状态。
当你释放 Person 时,你不再需要它并期望它被释放,通过 [NSMutableDictionary -removeObjectForKey:]
将其从字典中删除(从而减少保留计数)。但这需要使用 NSMutableDictionary,因为您无法从 NSDictionary 中删除对象。
关于iphone - Objective c - NSDictionary 保留对象问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10774602/