У меня проблемы с приложением для iPad, которое я создаю. Существует простая последовательность изображений / анимация из 80 кадров в одной точке.
Код выглядит следующим образом (это подкласс UIView):
- (id)init {
UIImage *theImage = [UIImage imageNamed:@"chart0075.jpg"];
// get the frame
CGRect lgeFrame = CGRectMake(20, 130, theImage.size.width, theImage.size.height);
// set the new frame
CGFloat newHeight = theImage.size.height/1.65;
CGFloat newWidth = theImage.size.width/1.65;
CGRect smlFrame = CGRectMake(480, 200, newWidth, newHeight);
self = [super initWithLargeFrame:lgeFrame smallFrame:smlFrame];
if(self){
// lets add the image as an image view
theImageView = [[UIImageView alloc] initWithImage:theImage];
[theImageView setFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
[theImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[self addSubview:theImageView];
// now we need to make an array of images for the image sequence
NSMutableArray *imageSeq = [NSMutableArray array];
for(int i = 1; i < 76; i++){
NSString *jpgnumber;
if(i<10){
jpgnumber = [NSString stringWithFormat:@"000%i",i];
}
else {
jpgnumber = [NSString stringWithFormat:@"00%i",i];
}
NSString *imageFile = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"chart%@",jpgnumber] ofType:@"jpg"];
[imageSeq addObject:[UIImage imageWithContentsOfFile:imageFile]];
}
[theImageView setAnimationImages:imageSeq];
[theImageView setAnimationDuration:1.5];
[theImageView setAnimationRepeatCount:1];
}
return self;
}
Тогда при жесте обратного сжатия изображение должно быть анимировано. В первый раз, когда я делаю этот жест обратного сжатия, для запуска анимации требуется несколько секунд. И иногда я получаю предупреждение уровня памяти 1, и приложение вылетает.
В чем здесь проблема? 80 jpgs слишком много, чтобы держать в памяти сразу? Их общий размер составляет менее 2 Мб, поэтому они не должны заполнять память ipad, верно?
Я посмотрел на это с помощью инструмента выделения, который предполагает, что у меня есть около 40 КБ памяти во время анимации, но затем это возвращается к 0 во время последующих анимаций. (хотя инструмент распределения действительно немного смущает меня).
Кто-нибудь знает, что это вызывает? Я могу опубликовать больше кода или что-нибудь еще, если необходимо?
Большое спасибо:)