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