У меня проблема с памятью телефона. Я пытаюсь сделать что-то вроде фрагментов Android, поэтому у меня есть представление контейнера, и когда мне нужно изменить представление, я только устанавливаю UIViewController в контейнере, но каждый раз, когда я изменяю представление контейнера, куча памяти сильно увеличивается, поэтому в 8 кликов память на айфоне уходит до 640мб. Как я могу удалить viewControllers в памяти?
это мой код:
private var activeViewController : UIViewController?{
didSet {
removeInactiveViewController(inactiveViewController:oldValue)
updateActiveViewController()
}
}
private func removeInactiveViewController(inactiveViewController: UIViewController?){
if let inactiveVC = inactiveViewController {
inactiveVC.willMove(toParent: nil)
inactiveVC.view.removeFromSuperview()
view controller
inactiveVC.removeFromParent()
}
}
private func updateActiveViewController(){
if let activeVC = activeViewController {
var duration = 0
addChild(activeVC)
activeVC.view.frame = fragmentContainer.bounds
fragmentContainer.addSubview(activeVC.view)
activeVC.didMove(toParent: self)
}
}
@IBAction func clickSearchs(_ sender: Any) {
if (statusFragments != 1 && statusFragments != 0){
prevStatusFragments = statusFragments
statusFragments = 1
imgSearch.isSelected = true
imgNotif.isSelected = false
imgRecord.isSelected = false
imgProfile.isSelected = false
imgOptions.isSelected = false
if (mapViewController != nil) {
print("Ya existia")
mapViewController!.removeFromParent()
mapViewController = nil
}
mapViewController = storyboard!.instantiateViewController(withIdentifier:
"MapContainerViewController")
activeViewController = mapViewController
} else {
}
}
@IBAction func clickNotifs(_ sender: Any) {
print("Hizo click en notificaciones")
if (statusFragments != 2){
prevStatusFragments = statusFragments
statusFragments = 2
imgSearch.isSelected = false
imgNotif.isSelected = true
imgRecord.isSelected = false
imgProfile.isSelected = false
imgOptions.isSelected = false
if (notifViewController != nil) {
notifViewController!.removeFromParent()
notifViewController!.removeFromParent()
notifViewController = nil
}
notifViewController = storyboard!.instantiateViewController(withIdentifier: "NotificationsContainerViewController")
activeViewController = notifViewController
} else {
}
}