내 SettingsVC에서 AppDelegate의 didFinishLaunchingWithOptions
기능에 의해 관찰 된 NSNotification.Name(rawValue: "LogOut")
의 알림을 보냅니다.사용자 로그 아웃으로 인해 응용 프로그램이 충돌 함
알림을 받으면 User.logout
으로 전화를 걸어 모든 사용자 데이터를 지운 다음 DispatchQueue
블록에서 앱이 다운됩니다.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.backgroundColor = .white
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: "LogOut"), object: nil, queue: nil) { _ in
User.logout()
DispatchQueue.main.sync {
self.navigationController?.setViewControllers([WelcomeViewController()], animated: false)
}
}
if let _ = UserDefaults.standard.string(forKey: "loggedIn") {
self.navigationController = UINavigationController(rootViewController: HomeViewController())
} else {
self.navigationController = UINavigationController(rootViewController: WelcomeViewController())
}
window?.rootViewController = navigationController
window?.makeKeyAndVisible()
return true
}
추가 정보없이 충돌이 발생합니다. 어떤 생각을 어떻게하지 못하게 만들 수 있습니까? 감사! 이
논리적으로 잘못 종료하기 전에 더 나은, 백그라운드 스레드에서 동 기적으로
출시를 메인 스레드를 사용하여 :
당신이 알고, setViewControllers''전 User.logout()','후, 얼마나 많은 ViewC ontrollers가 탐색 스택에 있습니까? –
두 명. 아마 어딘가에 강력한 참고가있을 것입니다. 그게 네가 얻고있는거야? –