*** - [UIImage retain]: сообщение отправлено на освобожденный экземпляр - PullRequest
0 голосов
/ 06 июня 2011

У меня очень странная проблема с управлением памятью в моих приложениях. У меня есть приложения UISplitViewController, в которых RootViewController является приложением UITabBarApplication. Ошибка:

*** -[UIImage retain]: message sent to deallocated instance 0x555960

всегда происходит, когда я пытаюсь переключать виды, нажимая кнопки панели вкладок. У меня есть три кнопки панели вкладок на кнопке. У меня также нет никакого вызова для сохранения UIImage где-либо в моем коде.

У кого-нибудь есть подсказки, как это отладить? Я понятия не имею, как воспроизвести это конкретно, я знаю только то, что это иногда происходит, когда я переключаюсь между вкладками.

Отладчик ломается в:

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, @"CVore", nil);
    [pool release];
    return retVal;
}

enter image description here

UPDATE: Я получил предупреждение о получении памяти. Уровень = 1, а затем, когда я переключаю вкладку, это дает мне эту ошибку.

Ответы [ 3 ]

0 голосов
/ 06 июня 2011
Received memory warning. Level=1

обычно означает, что в вашем коде происходит утечка памяти.По предоставленному вами коду невозможно понять, что не так.Либо предоставьте нам больше кода, либо альтернативно просмотрите WWDC 2010 Session 311 - Расширенный анализ памяти с помощью инструментов , который поможет вам самостоятельно находить ошибки.

0 голосов
/ 06 июня 2011

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

Хорошим началом будет включение NSZombieEnabled так что вы получите лучшее представление о том, какой объект задействован.Затем взгляните на то, как этот объект был создан в первую очередь.Поскольку ваше исключение возникает, когда вы получаете предупреждение памяти, посмотрите, что происходит в этом случае.У вас может быть метод -viewDidUnload, который неправильно освобождает объект.

0 голосов
/ 06 июня 2011

Вы пытались использовать Analyzer в своем коде?Нет гарантии, но это может помочь.

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