Я пытаюсь полностью освободить мой контроллер вида из памяти. После нескольких часов тестирования я, наконец, сократил его до UIAlertController
, оставаясь в памяти, что удерживает мой контроллер представления от освобождения.
@objc func logout_click() {
let alert = UIAlertController(title: "Confirmation", message: "Are you sure you want to log out?", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "YES", style: .default, handler: { _ in
// 'YES' button action
do {
try Auth.auth().signOut()
self.popInit()
} catch {
print(error)
}
}))
alert.addAction(UIAlertAction(title: "NO", style: .default, handler: { _ in
// 'NO' button action
alert.dismiss(animated: true)
}))
self.present(alert, animated: true)
}
func popInit() {
//Go back to init screen
self.navigationController?.popToRootViewController(animated: true)
}
Пока это предупреждение не отображается, Я могу использовать popInit (), и мой контроллер представления просто освобождается, но после появления этого предупреждения, даже после закрытия, контроллер представления не освобождается. Я не ссылаюсь ни на какие переменные, выходящие за рамки этой функции, так почему же это не позволяет мне освобождать? Что мне нужно сделать, чтобы разрешить освобождение контроллера моего представления?