2011-12-23 6 views
1

У меня есть более 100 изображений, которые я использую, чтобы загрузить в ImageView, используя следующий код:iPhone: Как управлять 130 изображениями в ImageView?

[imgV setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@%d.png",prefixName,counter]]]; 

, где выше код будет вызываться каждый 0.03s и counter это номер для загрузки различных изображений.

Выше идеи дает мне эффект анимации, где он используется для загрузки различного изображения на 0,03.

Но когда изображения больше, то они используются для crash.

Что мне делать? Или Как сохранить память в моем случае? Есть идеи?

+0

Попробуйте предварительно создать изображения, а не загружать и устанавливать их в одной строке, как вы это делали. Можно показать много минут видео, синхронизированное со звуком, путем настройки очереди отправки для загрузки и кэширования изображений. –

+0

скопируйте и вставьте журнал сбоев – Skyler

ответ

3

Попробуйте использовать

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension]; 
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation]; 
[UIImage imageWithData:imageData]; 

вместо

[imgV setImage:[UIImage imageNamed:fileName.extension]]; 

Также UIImageView есть метод setAnimationImages

imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 
[imgView setAnimationImages:myArray];//myArray - array of Images 
[imgView setAnimationDuration:1]; 
[imgView setAnimationRepeatCount=0]; 
[imgView startAnimating]; 
[self addSubview:imgView]; 
+0

+1 для setAnimationImages, но сохранение 100 изображений в памяти может привести к большим следам памяти и сбою, так что, скорее всего, это не так. – Eugene

+0

Для всех, кого мы знаем, изображения могут быть только размером 10 КБ каждый и проблема с памятью. – ader

+0

конвертирование в NSData сработало для меня спасибо – Devang

2

Вы, вероятно, делают это:

[imgV setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@%d.png",prefixName,counter]]]; 

в петле. Каждый из объектов imageNamed: получает выделение, но освобождается только тогда, когда пул авторекламы истощается. Попробуйте использовать этот код вместо этого:

UIImage *img = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@%d",prefixName,counter] ofType:@"png"]]; 
imgV.image = img; 
[img release];