Wydawanie nieużywanych stron w UIPageViewController

Używam osobnego.h, .m, i.xib pliki dla każdegoUIViewController strona oparta na aUIPageViewController książka z obrazkami. Każda strona jest załadowana animacjami, muzyką itp. I zajmuje około 4 MB pamięci. W instrumentach wolna pamięć spada o około 4 MB podczas ładowania każdej strony. Ta pamięć nigdy nie jest zwalniana, gdy strony są obracane. W końcu daje ostrzeżenia pamięci.UIPageViewController wydaje się, że każda strona, którą tworzy, ma swoją pamięć i nie wyładowuje jej. Gdy strony są szybko obracane, aplikacja ulega awarii.

Chciałbym móc wyładować wszystkie strony z wyjątkiem 3 wymaganych przezUIPageViewController - poprzednia, bieżąca i następna strona. Jak mogę rozładować niepożądane strony, ponieważ zostały utworzone przezUIPageViewController.

Poniżej znajduje się tablica stron, któreUIPageViewController wyciąga z. Wszystkie strony (strona1, strona2 itd.) Po prostu ładują pliki graficzne, zapewniają podstawową animację i muzykę.

    //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];

Zrezygnowałem ze standardowej inicjalizacji dlaUIPageViewController. To używa "nextPageNumber„wyciągnąć prawą stronę zpageArray powyżej, aby utworzyć nowy obiekt strony.

-(void)turnPageForward{

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

}

Próbowałem utworzyć obiekt ”pageIndex„(patrz poniżej), który jest ustawiony na zero po dostarczeniu go dopageController. To nie zadziałało. Strona nadal zajmowała pamięć po rozwinięciu stron.

//PROGRAM PAGE FORWARD

- (void) 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;                            

}

Przejrzałem przepływy stosu dla postów przy użyciu tego samego sposobu dostarczania stron doUIPageViewController, ale nic nie znalazłem blisko. Najbliżej byłoARC nie zwalnia pamięci podczas przechodzenia „wstecz” w kontrolerze nawigacyjnym„ale nie ustawia kontrolerów widoku w ten sam sposób.

Próbowałem ustawić niepożądane strony na zero, więc ARC może je usunąć bez powodzenia. Jakieś sugestie lub alternatywne ścieżki, które powinienem wypróbować? Podoba mi się efekt zwijania strony i nie byłem w stanie znaleźć dobrego gdzie indziej, który powodowałby zawijanie stron poziomych.

Dzięki! Eric

questionAnswers(3)

yourAnswerToTheQuestion