我正在写Swift 3(最新的Xcode)
我正在控制,如果用户已登录(异步任务检查设备和数据库之间的参数)。
如果响应显示设备无效,我将显示登录屏幕。看起来像这样:
extension UIViewController {
func forceLogin() {
let storyboard = UIStoryboard(name: "Login", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "LoginViewController")
let navController = UINavigationController(rootViewController: controller)
self.present(navController, animated: true, completion: nil)
}
}
登录故事板看起来就像这样。
当用户成功登录时,该功能开始:
DispatchQueue.main.async {
self.dismiss(animated: true, completion: nil)
}
解雇可能发生在第一个和第二个ViewController中。
想象一下情况:
forceLogin()
和...... libc ++ abi.dylib:以NSException类型的未捕获异常终止
使用self.present(navController, animated: true, completion: nil)
时会发生这种情况。
我有一些想法可能导致崩溃,但我不确定:
导致问题的原因是什么?如何避免崩溃?
如果需要更多信息,请询问。
答案 0 :(得分:2)
我总是忘记这一点。请记住这样的界面任务:
DispatchQueue.main.async {
self.present(navController, animated: true, completion: nil)
}