iPhone: как управлять 130 изображениями в ImageView? - PullRequest
1 голос
/ 23 декабря 2011

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

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 23 декабря 2011

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

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];
2 голосов
/ 23 декабря 2011

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

[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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...