Mam niestandardową kontrolę, taką jak pasek kart, który wyświetlawiele kontrolerów, niektóre z nich mają również mój pasek z innymi kontrolerami, więc moja aplikacja zużywa dużo pamięci, ponieważ każdy kontroler jest przechowywany w pamięci. Chcę więc wyładować niewidoczny kontroler, ale nie znalazłem żadnej metody na wyładowanie UIViewController. Jak mogę to zrobić?
PS. Nie mogę używać UITabBarController, naprawdę nie mogę.
Odpowiedzi:
1 dla odpowiedzi № 1Ty nie. UIViewControllers nie są rozładowywane przy małej ilości pamięci, tylko ich widoki.
To się dzieje w didReceiveMemoryWarning
na własnych kontrolerach widoku i jest wywoływany automatycznie, gdy pojawi się ostrzeżenie o małej ilości pamięci.
Zastąp to i zwolnij wszystko, co można odtworzyć w programie viewDidLoad
.
1 dla odpowiedzi nr 2
Usuń widok kontrolerów widoku z widoku nadzoru i zwolnij kontroler. Zadanie wykonane.
1 dla odpowiedzi nr 3
Wiem, że to stary wątek, ale może być przydatny dla kogoś.
Możesz zwolnić widok viewControllers, wywołując:
[viewControllerWhoseViewYouWantToUnload didReceiveMemoryWarning];