Освобождение неиспользуемых страниц в UIPageViewController

Я использую отдельный.h, .m, а также.xib файлы для каждогоUIViewController на основе страницыUIPageViewController на основе иллюстрированной книги. Каждая страница загружается с анимацией, музыкой и т. Д. И занимает около 4 МБ памяти. В приборах свободная память уменьшается примерно на 4 МБ при загрузке каждой страницы. Эта память никогда не освобождается при переворачивании страниц. Это в конечном итоге дает предупреждения памяти.UIPageViewController Кажется, что каждая страница, которую он создает, хранится в памяти и не выгружает ее. Поэтому, когда страницы переворачиваются быстро, приложение вылетает.

Я хотел бы иметь возможность выгрузить все страницы, кроме 3, необходимыхUIPageViewController - предыдущая, текущая и следующая страницы. Как я могу выгрузить ненужные страницы, так как они были созданыUIPageViewController.

Ниже приведен массив страниц, которыеUIPageViewController тянет от. Все страницы (Page1, Page2 и т. Д.) В основном просто загружают файлы изображений, обеспечивают базовую анимацию и имеют музыку.

    //ARRAY OF PAGES    
pageArray = [[NSArray alloc] initWithObjects:
        (id)[[Page1 alloc] initWithNibName:nil bundle:nil],
            [[Page2 alloc] initWithNibName:nil bundle:nil],    
            [[Page3 alloc] initWithNibName:nil bundle:nil],    
            [[Page4 alloc] initWithNibName:nil bundle:nil],    
            [[Page5 alloc] initWithNibName:nil bundle:nil],    
            [[Page6 alloc] initWithNibName:nil bundle:nil], 
            [[Page7 alloc] initWithNibName:nil bundle:nil],
            [[Page8 alloc] initWithNibName:nil bundle:nil],
             // continues all the way up to page 47
             [[Page47 alloc] initWithNibName:nil bundle:nil],
             nil];

Я пропустил стандартную инициализацию дляUIPageViewController, Оно использует "nextPageNumber"вытащить нужную страницу изpageArray выше, чтобы создать новый объект страницы.

-(void)turnPageForward{

[pageController setViewControllers:[NSArray arrayWithObject:[pageArray objectAtIndex:nextPageNumber]]
                         direction:UIPageViewControllerNavigationDirectionForward
                          animated:YES completion:^(BOOL finished){
                          }];

}

Я пытался создать объект "pageIndex«(см. ниже), который устанавливается равным нулю после предоставления егоpageController, Это не сработало. Страница все еще занимала память после того, как страницы продвинулись.

//PROGRAM PAGE FORWARD

- (недействительными) turnPageForward {

UIViewController * pageIndex =[pageArray objectAtIndex:nextPageNumber];  //nextPageNumber is the next page to load

[pageController setViewControllers:[NSArray arrayWithObject:pageIndex]
                         direction:UIPageViewControllerNavigationDirectionForward 
                          animated:YES completion:^(BOOL finished){
                          }];                                  
pageIndex = nil;                            

}

Я просматривал stackoverflow для сообщений, использующих тот же способ предоставления страницUIPageViewController, но не нашли ничего близкого. Ближайший былARC не освобождает память при возврате в навигационном контроллереmsgstr "но не устанавливает контроллеры вида таким же образом.

Я попытался установить ненужные страницы на ноль, чтобы ARC мог удалить их без удачи. Любые предложения или альтернативные пути, которые я должен попробовать? Мне нравится эффект скручивания страницы, и я не смог найти хорошего в другом месте, который делает горизонтальные скручивания страницы.

Спасибо! Эрик

Ответы на вопрос(3)

Ваш ответ на вопрос