У меня есть FakeSplashController
, который выполняет некоторые сетевые запросы и после этого открывает WelcomeViewController
.Когда я смотрю график памяти в WelcomeViewController
, я вижу, что SplashViewController
все еще там.Я вызываю функцию deinit
в FakeSplashController
, чтобы проверить, является ли она денитирующей, но не вызывает ее.В чем может быть проблема?
Что я вижу в памяти, когда в WelcomeViewController
:
FakeSplashController:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setupUI()
networkRequests()
}
func networkRequests(){
AppInitService().initAppRequest { [](result) in
switch result{
case .success(_):
self.startAnimation()
return
case .error(let error):
UIControlUtil.showErrorMessage(title: error.title, message: error.message, closeButton: true)
return
}
}
}
func openApp(){
let loginController = WelcomeViewController()
self.present(loginController, animated: true)
}
func startAnimation(){
UIView.animate(withDuration: 0.8, animations: {
self.logoImage.frame.origin.x -= 100
}, completion: nil)
UIView.animate(withDuration: 1,delay: 0.3,animations: {
self.textLogo.alpha = 1
self.textLogo.frame.origin.x += 50
}, completion: { _ in
self.openApp()
})
}
deinit {
print("Splash Deinited")
}
РЕДАКТИРОВАТЬ: Как я читал в следующем посте, кто-то упомянул это;
Если вы не делаете что-то очень специализированное, вам не нужно деинициализировать объект в Swift.Он будет вызван автоматически, когда счетчик ссылок станет равным 0. Если вам действительно нужно, вы сможете установить rootViewController вашего окна через AppDelegate.
Так что мне не нужно это делатькак проблема? Лучший способ деинитировать начальный вид контроллера?