Утечка памяти приложения iPhone с анимацией UIImage? Проблема тестирования на устройстве
У меня есть анимация, которая отлично работает в симуляторе, но вылетает на устройстве. Я получаю следующую ошибку...
Программа получила сигнал: "0". Отладчик вышел из-за сигнала 10 (SIGBUS)
Небольшое расследование показывает, что UIImages не освобождаются, и у меня есть утечка памяти. Я новичок в этом, так что кто-то может сказать мне, если это вероятная причина? Если бы вы могли также сказать мне, как решить это, то это было бы удивительно.
Изображения размером 480px x 480px и около 25kb каждое. Мой код ниже...
NSArray *rainImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"rain-loop0001.png"],
[UIImage imageNamed:@"rain-loop0002.png"],
[UIImage imageNamed:@"rain-loop0003.png"],
[UIImage imageNamed:@"rain-loop0004.png"],
[UIImage imageNamed:@"rain-loop0005.png"],
[UIImage imageNamed:@"rain-loop0006.png"],
//more looping images
[UIImage imageNamed:@"rain-loop0045.png"],
[UIImage imageNamed:@"rain-loop0046.png"],
[UIImage imageNamed:@"rain-loop0047.png"],
[UIImage imageNamed:@"rain-loop0048.png"],
[UIImage imageNamed:@"rain-loop0049.png"],
[UIImage imageNamed:@"rain-loop0050.png"],
nil];
rainImage.animationImages = rainImages;
rainImage.animationDuration = 4.15/2;
rainImage.animationRepeatCount = 0;
[rainImage startAnimating];
[rainImage release];
Спасибо
2 ответа
Я почти уверен, что вы зависаете, потому что [NSArray arrayWithObjects:] возвращает автоматически выпущенный объект, который вы сохраняете в rainImage. Затем внизу вы снова выпускаете rainImage, тем самым перезагружая его.
Корень проблемы в том, что у вас не хватает основной памяти, потому что у вас слишком много распакованных образов в памяти, см. Мой ответ на утечки памяти uiimage-animation-вызвав-app-to-crash-memory-утечки по той причине, что вы не должны быть используя UIImageView.animationImages.