UIPageViewController с изображения срива приложението

Използвах UIPageViewController, искам да покажа 24-те страници и всяка страница не е текст, а изображение в контролера за contentview, използвам този код

 self.imgView.image=nil;
 self.imgView.image= [UIImage imageNamed:[NSString  stringWithFormat:@"image%d.jpg",index+1]];

 if(self.categoryId==3 ||self.categoryId==4)
 {
     self.imgView.contentMode=UIViewContentModeScaleToFill;
 }
 else
 {
     self.imgView.contentMode=UIViewContentModeScaleAspectFit;
 }

но проблемът е, че когато стартирам приложението и прелиствам страниците след 17 или 18 страница, ми дава предупреждение за паметта и приложението ми се срива


person deve1    schedule 30.10.2012    source източник
comment
Как реагирате на предупреждението за памет? Всъщност освобождавате ли памет, която е невидима. Няма нужда да съхранявате повече от 3 страници в паметта наведнъж. Това е страницата, която се вижда в момента и тези две до нея. Така че 16, 17 и 18, когато 17 се вижда в момента. Всичко останало може да бъде освободено (и създадено отново, когато потребителят превърти/страници до него).   -  person Hermann Klecker    schedule 30.10.2012
comment
просто настройвам изображението в изглед на изображение. можете ли да обясните как мога да премахна други страници? и как да освободим невидима памет? Благодаря   -  person deve1    schedule 30.10.2012


Отговори (1)


Можете да опитате и да използвате:

NSString* imgFile = [NSString  stringWithFormat:@"image%d",index+1];
NSString* pathToImageFile = [[NSBundle mainBundle] pathForResource:imgFile ofType:@"jpg"];
self.imgView.image = [UIImage imageWithContentsOfFile:pathToImageFile];

Наистина, imageNamed кешира всички изображения, които зареждате през него. Кешът става все по-голям и по-голям и предотвратява правилното освобождаване на паметта.

person sergio    schedule 30.10.2012
comment
Благодаря. Работи, но след завършване на навигацията 3-4 пъти приложението все още се срива - person deve1; 30.10.2012