Мое приложение имеет вид с тремя UIImageViews
. В качестве файлов ресурсов имеется около 150 изображений, каждый из которых составляет около. Приложение покажет все изображения, но только три за раз.Загрузка новых изображений в UIImageView, память из предыдущих изображений не выпущена
Но каждый раз, когда я нажимаю кнопку, чтобы загрузить еще три изображения в UIImageViews
, столбец «Общий байт» в приложении «Инструменты» увеличивается примерно на 700 КБ, пока я не получу предупреждение о низкой памяти, а затем приложение выйдет из строя. Так или иначе, память, которую я использую для каждой загрузки трех изображений, не выпускается.
Я искал googled и старался изо всех сил, чтобы это сделать, но не успел и мне нужна помощь.
Я попытался это:. (Этот код является частью действия, чтобы загрузить еще три изображения Три ImageViews являются imgShownLeft
, imgShownMiddle
и imgShownRight
Те переменные экземпляра я сначала поставить currentImage
во всех трех UIImageViews
.. , а затем положить previousImage
в левую и nextImage
в праве одного:
NSString *strImageToSet = [[imgNamesArray objectAtIndex:currentImage] stringByAppendingFormat:@".jpg"];
UIImage *img = [UIImage imageNamed:strImageToSet];
[imgShownMiddle setImage:img];
[imgShownLeft setImage:img];
[imgShownRight setImage:img];
NSString *strPreviousImage = [[imgNamesArray objectAtIndex:previousImage] stringByAppendingFormat:@".jpg"];
img = [UIImage imageNamed:strPreviousImage];
[imgShownLeft setImage:img];
NSString *strNextImage = [[imgNamesArray objectAtIndex:nextImage] stringByAppendingFormat:@".jpg"];
img = [UIImage imageNamed:strNextImage];
[imgShownRight setImage:img];
Тогда я попытался это: вместо:
UIImage *img = [UIImage imageNamed:strImageToSet];
я использовал:
UIImage *img = [[UIImage alloc] initWithContentsOfFile:strImageToSet];
и назначен img
к UIImageViews
таким же образом, а затем [img release];
Тогда я попробовал:
UIImage *img = [[[UIImage alloc] initWithContentsOfFile:strImageToSet] autorelease];
Тогда я попробовал:
img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[imgNamesArray objectAtIndex:currentImage] ofType:@"jpg"]];
Но в каждом случае требования к памяти росли с каждым прогоном этого действия.
Я знаю, что можно хранить одновременно три изображения без хранения 150 изображений в памяти! Что я делаю не так?
Спасибо за понимание. /SD
Вы нашли решение по этой проблеме? –