2012-05-27 3 views
2

Я попытаюсь объяснить себя, у меня есть объект Person и одноэлементный объект PeopleManager, который имеет NSDictionary *_people.
_people - это словарь, который содержит Person объектов с ключом personId.Цель c - Проблема с сохраняющимися объектами NSDictionary

Когда создается человек, я добавляю его (self) в _people словаре (в методе Personinit)

Словарь человек должен держать объект человека, пока человек не dealloc, но проблема в том, что если Я выделяю человека где-то в своем коде, а затем его выпускаю, он не получит dealloc, потому что PeopleManager все еще держит его в словаре _people.

На самом деле проблема заключается в том, что словарь _people сохраняет человека, если бы у него был подходящий словарь, это было бы здорово, но я знаю, что это невозможно.

Что делать, чтобы решить эту проблему?

+0

Как вы добавлением объектами в NSDictionary? Он неизменен и поэтому не может быть изменен. –

ответ

3

Словарь должен содержать человека, потому что он использует его. Если этого не произошло, словарь не мог бы гарантировать, что его объекты всегда были живы.

Когда вы освобождаете Личность, чтобы он больше не нуждался в нем и ожидал, что он будет удален, удалите его из словаря через [NSMutableDictionary -removeObjectForKey:] (и таким образом уменьшите счет сохранения). Это потребует использования NSMutableDictionary, хотя вы не можете удалить объекты из NSDictionary.

1

Если вы используете изменяемый коллега NSDictionary, вы могли бы удалить объект, который передается из использования с простыми -removeObjectForKey:

Смежные вопросы