Мое приложение падает, когда я устанавливаю свойство изображения в UIImageView три раза подряд (иногда бывает два раза). Несколько раз я видел предупреждение о памяти перед тем, как приложение закрывается, но в большинстве случаев оно просто разрушается. Приложение не сбой в симуляторе, поэтому я уверен, что это проблема с памятью.Приложение вылетает, когда UIImageView.image установлен в 2-3 раза
Вот код, я использую при установке свойства изображения:
-(void)changeBgPictureTo:(UIImage *)img
{
[self.backgroundImage setImage:img];
}
В UIImages выделяется с [UIImage imageWithData:]
способом:
[UIImage imageWithData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileName ofType:type]]];
Изображение установлен правильно первые два раза, но аварии в третий раз. Это не имеет никакого отношения к конкретному файлу изображения. Я пробовал с 10 различными изображениями, и это не имеет никакого значения.
Как заставить UIImageView выгружать предыдущие загруженные изображения?
EDIT: Хорошо, я просил весь код так вот он идет:
Я работаю с классом, который выглядит следующим образом:
@interface MyImage : NSObject
{
UIImage* image;
int imgId;
NSArray* colors; //contains 'UIColor' objects.
}
@property (nonatomic, retain) UIImage* image;
@property (nonatomic, retain) NSArray* colors;
@property (nonatomic, readwrite) int imgId;
-(id)initWithFileName:(NSString*)fileName withType:(NSString*)type andId:(int)imgId andColors:(NSArray*)colorArray;
@end
Вот реализация INIT:
-(id)initWithFileName:(NSString*)fileName withType:(NSString*)type andId:(int)imageId andColors:(NSArray*)colorArray
{
self = [super init];
if (self)
{
self.colors = [NSArray arrayWithArray:colorArray];
self.imgId = imageId;
self.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileName ofType:type]]];
}
return self;
}
У меня есть datacontroller, который имеет список объектов «MyImage», который добавляется в цикле с этим вызовом:
[self.myImages addObject:[[MyImage alloc] initWithFileName:[NSString stringWithFormat:@"0000%d", i] withType:@"jpg" andId:i andColors:colors]];
У меня есть 9 изображений, который назван 00001.jpg, 00002.jpg, ... .., 00008.jpg.
Этот контроллер данных имеет метод следующим образом:
-(MyImage *)getImageWithId:(int)imgId
{
for (MyImage* img in self.myImages)
{
if (img.imgId == imgId)
return img;
}
return nil;
}
Метод getImageWithId называется так:
-(void)btnPushed:(id)sender
{
[self.delegate changeBgPictureTo:[self.imgDataController getImageWithId:((UIButton*)sender).tag]];
}
Метод changeBgPictureTo является метод, который делает настройку изображения-свойства :
-(void)changeBgPictureTo:(MyImage *)img
{
NSLog(@"Setting image: %d", img.imgId);
[self.backgroundImage setImage:img.image];
}
Отпечаток журнала «Установочное изображение: 0000X:» три раза, b ut аварийно завершает работу после третьей печати.
вы пробовали установить его на ноль, прежде чем загружать новое изображение .. я имею в виду imageView.image = nil; – vishy
Да, это не имеет значения. Он по-прежнему сбой :( –
Что вы видите в журнале при его сбое? Какой тип сбоя происходит? – DBD