转换到另一个视图控制器时,应用程序崩溃而没有有关崩溃的信息
Application crashing without information about crash when transitioning to another view controller
我有两个视图控制器,LoginViewController
和 TermsAndPrivacyViewController
。
在第一个视图控制器上,有一个带有 IBAction
的按钮,可以打开 TermsAndPrivacyViewController
。在 TermsAndPrivacyViewController
我有网络视图,加载 url 我从 LoginViewController
路过。所以,这是代码(登录视图控制器):
@IBAction func tosAction(_ sender: Any) {
if let vc = UIStoryboard(name: "Login", bundle: nil).instantiateViewController(withIdentifier: kTOSViewControllerIdentifier) as? TermsAndPrivacyViewController{
vc.url = URL(string: kTOSUrl)
self.navigationController?.pushViewController(vc, animated: true)
}
}
关于 TermsAndPrivacyViewController,我有这个:
override func viewDidLoad() {
super.viewDidLoad()
webView.navigationDelegate = self
if let `url` = url {
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
}
}
所以,当我点击一个按钮时,应用程序崩溃 SIGABRT
消息,没有别的。此外,我没有收到有关 Firebase Crashlytics 的任何崩溃报告(我首先从调试器中分离了一个应用程序,并产生了崩溃)。
现在,奇怪的部分:/ ... 如果我在 tosAction()
方法的第一行放置一个断点,然后一步一步(或让它继续),一切正常。没有崩溃???
我是不是遗漏了什么明显的东西?崩溃的原因是什么?另外,我尝试输入 Exception Breakpoint
但没有任何变化。我只得到这个:
和控制台:
所以,根本没有关于崩溃的信息。
编辑
好吧,现在更奇怪的是:)我刚刚在不同的手机上试过应用程序。
应用程序在 iPhone 6s+、iOS 12.1(16B5059d) 上崩溃,但它在 iPhone 6、iOS 12.0 (16A366)[=24= 上正常运行]
可能您使用了那些设备不支持的库或框架。
你必须看到错误
你试过了吗?
当应用程序崩溃时,在控制台中按 cmd+F 并搜索异常。
现在你可以看到你的错误
希望对您有所帮助。
或许您可以在 LoginViewController 中使用 segue 方法。
@IBAction func tosAction(_ sender: Any) {
performSegue(withIdentifier: "GoToWeb", sender: nil)
}
}
并调用 prepareForSegue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "GoToWeb") {
let vc = segue.destination as! TermsAndPrivacyViewController
vc.url = "YOUR_URL"
}
并且 TermsAndPrivacyViewController 中的代码没有改变
编辑:
也许你的 UIButton 绑定不好,你可以在右侧面板的 "Show the connection inspector" 部分验证你的按钮是否只调用一次。
要获取有关此类崩溃的更多信息,请打开断点菜单(或按 CMD+8),单击左下角的加号图标并按 异常断点...。右键单击,然后编辑。添加类型为 Debugger Command 的操作并输入以下内容:
再次重现崩溃,这次控制台会输出更有用的错误信息。
我有两个视图控制器,LoginViewController
和 TermsAndPrivacyViewController
。
在第一个视图控制器上,有一个带有 IBAction
的按钮,可以打开 TermsAndPrivacyViewController
。在 TermsAndPrivacyViewController
我有网络视图,加载 url 我从 LoginViewController
路过。所以,这是代码(登录视图控制器):
@IBAction func tosAction(_ sender: Any) {
if let vc = UIStoryboard(name: "Login", bundle: nil).instantiateViewController(withIdentifier: kTOSViewControllerIdentifier) as? TermsAndPrivacyViewController{
vc.url = URL(string: kTOSUrl)
self.navigationController?.pushViewController(vc, animated: true)
}
}
关于 TermsAndPrivacyViewController,我有这个:
override func viewDidLoad() {
super.viewDidLoad()
webView.navigationDelegate = self
if let `url` = url {
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
}
}
所以,当我点击一个按钮时,应用程序崩溃 SIGABRT
消息,没有别的。此外,我没有收到有关 Firebase Crashlytics 的任何崩溃报告(我首先从调试器中分离了一个应用程序,并产生了崩溃)。
现在,奇怪的部分:/ ... 如果我在 tosAction()
方法的第一行放置一个断点,然后一步一步(或让它继续),一切正常。没有崩溃???
我是不是遗漏了什么明显的东西?崩溃的原因是什么?另外,我尝试输入 Exception Breakpoint
但没有任何变化。我只得到这个:
和控制台:
所以,根本没有关于崩溃的信息。
编辑
好吧,现在更奇怪的是:)我刚刚在不同的手机上试过应用程序。
应用程序在 iPhone 6s+、iOS 12.1(16B5059d) 上崩溃,但它在 iPhone 6、iOS 12.0 (16A366)[=24= 上正常运行]
可能您使用了那些设备不支持的库或框架。 你必须看到错误
你试过了吗?
当应用程序崩溃时,在控制台中按 cmd+F 并搜索异常。 现在你可以看到你的错误
希望对您有所帮助。
或许您可以在 LoginViewController 中使用 segue 方法。
@IBAction func tosAction(_ sender: Any) {
performSegue(withIdentifier: "GoToWeb", sender: nil)
}
}
并调用 prepareForSegue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "GoToWeb") {
let vc = segue.destination as! TermsAndPrivacyViewController
vc.url = "YOUR_URL"
}
并且 TermsAndPrivacyViewController 中的代码没有改变
编辑:
也许你的 UIButton 绑定不好,你可以在右侧面板的 "Show the connection inspector" 部分验证你的按钮是否只调用一次。
要获取有关此类崩溃的更多信息,请打开断点菜单(或按 CMD+8),单击左下角的加号图标并按 异常断点...。右键单击,然后编辑。添加类型为 Debugger Command 的操作并输入以下内容:
再次重现崩溃,这次控制台会输出更有用的错误信息。