Утечка памяти iOS со словарем - PullRequest
1 голос
/ 25 августа 2011

Я сейчас профилирую свое приложение и сталкиваюсь с несколькими утечками. Я пытался выпустить объекты повсюду, где я думаю, что они нужны. В каждом выпуске приложение зависало.

Вот одна строка, которую я считаю виновной:

NSDictionary *dicUserData = [NSDictionary dictionaryWithObject:self forKey:@"chapter"];

Просто интересно, как лучше с этим справиться. У меня тоже есть проблемы с другими утечками, которые похожи. Стоит отметить, что self - это пользовательский класс [Dal_Chapter].

Нужно ли реализовать копию или что-то еще, вызвать это в приведенной выше строке и сделать авто-выпуск для этого?

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 25 августа 2011

Я бы проверил статический анализатор, чтобы он мог указать на ваши утечки.

Этот словарь сохранит себя, поэтому вам не нужно об этом беспокоиться.

Владелец сам выпускает его?

1 голос
/ 25 августа 2011

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

0 голосов
/ 25 августа 2011

всегда держите все переменные освобожденными в методе dealloc. если это не в нужном месте, это может быть сбой. Проверьте эту ссылку нажмите здесь

0 голосов
/ 25 августа 2011

В основном вам не нужно ничего делать со своим словарем, но если вы хотите взять под контроль память, вам нужно сделать это:

NSDictionary *dicUserData = [[NSDictionary alloc] initWithObjects:yourObject forKeys:key];

и int ваш метод dealloc,

[dicUserDate release];

Но обычно вам просто нечего делать ... Вы уверены, что ваша утечка исходит из вашего словаря?

...