Передача словаря из контроллеров представления - PullRequest
0 голосов
/ 23 декабря 2009

В одном из моих контроллеров представления навигации я строю массив словарей для отображения в таблице. На основе того, который я выбираю, я удаляю словарь из массива NSDictionary * note = [уведомления objectAtIndex: roomIndex];

Я создаю новый контроллер вида, используя Лента * alert_view = [[Уведомление о выделении] initWithObject: уведомление];

Я нажимаю контроллер представления навигации, и я реализовал initWithObject, который принимает словарь.

Я выпускаю уведомление и note_view, и все это прекрасно работает, но если я выбрал «вернуться назад», выберите «вернуться назад» примерно в третий или четвертый раз, когда произойдет сбой всего приложения. Если я не освобождаю их обоих, все работает нормально, без проблем, за исключением случаев утечки памяти. Если я выпускаю только один из них, любой из них, он снова выходит из строя. Что дает? Должен ли я не использовать initWithObject или передавать его другим способом? Я также пытался использовать авто-релиз, но с тем же результатом.

Ответы [ 2 ]

1 голос
/ 23 декабря 2009

уведомление - вы не должны освобождать, так как вы не являетесь владельцем объекта (вы просто используете объект, возвращаемый из NSArray), иначе не сохраните этот объект, когда вы извлекаете объект из NSArray и освобождаете его на более поздней стадии.

note_view - согласно вашему объяснению, я не вижу проблем с выпуском, я предполагаю, что у вас нет ссылок на этот объект из другой части кода.

0 голосов
/ 23 декабря 2009

Полагаю, вы захотите избавиться от [selectedNotice release], так как там, кажется, нет соответствующего вызова -retain.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...