Управление памятью в приложении ipad / iphone - PullRequest
0 голосов
/ 12 апреля 2010

У меня есть приложение, в котором мне кажется, что память не высвобождается, но я не уверен, как проанализировать эту проблему.

«Analyze» в xcode не показывает проблем, а «Instruments» не показывает утечек памяти.

Насколько я видел, не рекомендуется смотреть на счет удержания.

Как я могу найти проблемные объекты? Я добавил распечатки в метод объекта dealloc и не вижу, что это вызывается.

Обновление

Я сейчас получаю это

objc [69139]: FREED (id): сообщение retainCount, отправленное освобожденному объекту = 0x5422420

Есть ли простой способ узнать, что это за объект? «Анализ» не сообщает о недействительных выпусках.

1 Ответ

0 голосов
/ 12 апреля 2010

Я предлагаю поискать ваш код и найти все операторы init / alloc. Затем проверьте для каждого объекта, что он освобождается должным образом. Если у вас есть одна проблема, у вас, вероятно, больше. На первый взгляд это может показаться дорогостоящим, но, вероятно, окупится в исправленных ошибках.

Очень важно следить за ссылками, исходящими от перьев, которые вы также устанавливаете. Это очень легко иметь тех, кто не выпущен. Я нахожу самый простой способ убедиться, что нет ошибок памяти, есть объявить их примерно так:

@property (nonatomic, retain) IBOutlet UILabel *message;

Затем убедитесь, что dealloc имеет вид:

- (void)dealloc {
    self.message = 0;
    [super dealloc];
}

Некоторое время назад я выполнил оба эти действия, и все ошибки памяти были устранены.

...