gpt4 book ai didi

ios - 如何调试 SIGABRT 和 NSLayoutConstraint 常量不一致的崩溃不是有限的!这是非法的。常量 :nan

转载 作者:行者123 更新时间:2023-11-30 12:13:27 24 4
gpt4 key购买 nike

我已经查看了所有 SO 答案,所有内容似乎都指向除以零的问题,但是,我在任何地方都没有除以零(至少我可以告诉)。

我得到的总错误:

2017-08-17 10:08:49.760586-0500 APP[90643:6605106] * Assertion failure in -[NSLayoutConstraint _setSymbolicConstant:constant:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/Foundation/Foundation-1350/Layout.subproj/NSLayoutConstraint.m:711 2017-08-17 10:08:49.761100-0500 APP[90643:6605106] * Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSLayoutConstraint constant is not finite! That's illegal. constant:nan firstAnchor: secondAnchor:(null)' *** First throw call stack: (0x18ccaafe0 0x18b70c538 0x18ccaaeb4 0x18d743760 0x18d6e4b40 0x18d6e4a04 0x102ac2b7c 0x102ac28c4 0x102abddf4 0x102abe038 0x192df4838 0x192e8f9a4 0x18cba06c0 0x18cb976fc 0x192df4ac0 0x192df45a8 0x19312d080 0x193069594 0x19305b630 0x192dcf28c 0x18cc589a8 0x18cc56630 0x18cc56a7c 0x18cb86da4 0x18e5f1074 0x192e41c9c 0x100038ec8 0x18bb9559c) libc++abi.dylib: terminating with uncaught exception of type NSException

由于它确实谈到了 .width,似乎被零除可能是问题所在,尽管我已经三重检查了我的代码并且代码中的任何位置只有一个除法:

self.startButton.frame = CGRect(x:self.view.frame.midX - (self.view.frame.midX / 2),y:self.view.frame.midY - 20,width:self.view.frame.midX,height:40)

这只是为了使按钮居中。

崩溃是不一致的(这总是令人沮丧!),这意味着我经常可以重复相同的操作,并且在崩溃之前它工作正常(有时在 2-3 次后,其他时候,它立即发生......)

以下是有关该问题的场景和代码:

我在一个 tabBarController 中(它有几个选项卡,所有功能都工作正常)并收到推送通知(各种推送通知可以很好地使用相同的代码设置所有操作和页面)。

let vc = currentViewController.storyboard?.instantiateViewController(withIdentifier: "\(rcView)")
if vc != nil {
currentViewController.present(vc!, animated: true, completion: nil)
}

这将我带到一个 UIViewController,其中包括 map 、方向、各种按钮等(再次,工作得很好)。

这是我们有时会看到崩溃的地方......

当我们点击 Controller 上的“取消”按钮时

let cancelButton = UIButton(type: .system)
cancelButton.addTarget(self, action: #selector(self.cancelIt), for: .touchUpInside)

进入cancelIt函数

self.navigationController?.popViewController(animated: true)
self.dismiss(animated: true, completion: nil)

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "Home") as! UITabBarController
UIApplication.shared.keyWindow?.rootViewController = viewController
viewController.selectedIndex = 0

取消后,我可以发送另一个推送通知,有时它会起作用,而有时它会崩溃。

当它崩溃时,我收到上面列出的错误以及 AppDelegate.swift 中的一条红线突出显示

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

带有“线程 1:信号 SIGABRT”(我以前见过,通常意味着主 Storyboard上有重复的名称)

我很确定这都与从 tabBarController 移动到 UIViewController 的不太优雅(恕我直言)的方式有关,但为什么如此不一致?

欢迎使用其他方式进行这种切换 - 我对其他人的做法进行了大量研究,这似乎是最干净的,但“有时”工作并不会让客户满意!

最佳答案

经过更多搜索(并且感谢我在另一个 SO 问题的评论中看到的提示 - 抱歉,我丢失了链接...)关于如何更好地阅读 xcode 崩溃( https://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1 ),我找到了问题出现在我正在使用的 Mapbox 软件中( https://github.com/mapbox/mapbox-navigation-ios ),而不是出现在我的代码中......

不一致的问题归结为模拟位置的位置变化以及作为/在“目的地”点传入的推送通知(当“当前位置”和“目的地位置”相同时,MapBox 软件想出一个 nan)。

我通过检查 nan (.isNaN) 修复了这个问题,尽管稍后又发生了一次崩溃......

现在,我已经更新了 SDK 并正在解决其他问题(一个是我们不再听到声音 - 另一个是模拟位置似乎无法正常工作......AARRGGHH!)但至少是特定的问题中的问题已得到解答 - 它在图书馆!

关于ios - 如何调试 SIGABRT 和 NSLayoutConstraint 常量不一致的崩溃不是有限的!这是非法的。常量 :nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45739758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com