iphone - Objective c - NSDictionary 保留对象问题

标签 iphone objective-c nsdictionary dealloc retaincount

我会尝试解释一下自己,我有一个对象 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/

相关文章:

iphone - 如何避免 gridView 现在覆盖我的 uilabel 的情况 :iphone

iphone - 无限滚动+iphone

ios - 如何处理 iOS 中的不同方向

objective-c - 如何正确转换为规范字符串以在 Cocoa 中进行搜索?

iphone - 我可以将视频从 iPhone 或 iPad 流式传输到服务器吗?

ios - iPad布局问题

objective-c - 包装 NSButton 标题

ios - 我如何将带有对象数组的 json 字符串转换为带有 nsdictionaries 的 nsarray - IOS

objective-c - 将 NSDictionary 附加到其他 NSDictionary

ios - valueForKey 返回 nil