Боюсь, это злой код:
CGRect iRect = CGRectMake(0.0f, 0.0f, 320.0f, 400.0f);
UIImageView *imgView = [[UIImageView alloc] initWithFrame:iRect];
imgView.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"b0001.png"],
[UIImage imageNamed:@"b0002.png"],
// 150 more
[UIImage imageNamed:@"b0152.png"],
nil];
Я слегка припоминаю, что imageNamed: зло. Если я сделаю это таким образом и я должен предоставить объекты UIImage, то эти объекты UIImage немедленно загрузят эти файлы изображений в память, верно? И, кроме того, все эти 152 коротких объекта UIImage занимают большой перерыв в памяти, потому что они выпускаются автоматически, не так ли?
Итак, в заключение, использование этой техники - отстой. Имеет ли это? Я не знаю. На моем старом iPod Touch первого поколения это, кажется, работает без задержек со скоростью 25 кадров в секунду. Очень гладко и красиво. Единственное, чего я опасаюсь, это то, что некоторые другие устройства могут иначе подумать об этом. Хотя у меня самый слабый программируемый ipod touch из имеющихся.
В любом случае, кто-нибудь видит здесь возможность улучшения? Или мне не следует использовать это и использовать setImage: of UIImageView в собственном алгоритме, который будет загружать и устанавливать эти изображения с отложенными селекторами, используя эту короткую вещь imageWithContentsOfFile (может называться иначе), без автоматического выпуска? Может быть, какой-нибудь умник написал небольшую библиотеку для высокопроизводительных видеороликов, состоящих из последовательностей изображений?
(нет, видео не подходит для iphone; фреймворки Apple для этого просто поддерживают полноэкранный режим, и я не знаю ничего другого, что могло бы сделать это)