Видео сеанса WWDC 2011 318 «Производительность iOS в глубину» (около 43 минут 50 секунд) описывает, как анимация UIImage в UIImageView может использовать много памяти. Они предлагают при анимации больших изображений с использованием
- (void) animateImages
{
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(animateImage:)];
}
- (void) animateImage:(CADisplayLink *)link
{
[imageView setImage:[UIImage imageWithContentsOfFile:nextImagePath()]];
}
Скорость анимации не гарантируется. Использование + [UIImage imageWithContentsOfFile:] является ключевым, поскольку + [UIImage imageNamed:] будет кэшировать экземпляры изображений.
Я использовал эту технику в своем приложении, в которой не хватало памяти, переключаясь между наборами анимации больших изображений, и все отлично работает на iPhone 3GS и iPhone 4S. Это медленно на iPhone 3GS, но 3GS не мог даже сделать один набор анимаций раньше. Глядя на статистику Dirty Size в VM Tracker, разница огромна.