gpt4 book ai didi

ios - EXC_BAD_INSTRUCTION 在 Swift 中对于 locationManager 崩溃(经理 : CLLocationManager, didUpdateLocations 位置:[CLLocation])

转载 作者:行者123 更新时间:2023-11-30 14:03:50 27 4
gpt4 key购买 nike

我正在研究 GPS 功能。

我已推迟更新设置,并且正在相应 GPS 委托(delegate)内处理事件

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])

当我尝试将路线保存到成员变量 _userRoutes 时遇到问题,该变量基本上是用户已采取的路线的列表。 _userRoutes 有效并已声明,并且在调用此代码时可以正常工作 (100%)。

在上面的回调中我有以下代码:

            var route:Route!
if (self._userRoutes.last?.routeType == self._currentActivityType)
{
route = self._userRoutes.last
route.locations = route.locations + points
route.locationCoordinates = route.locationCoordinates + points2D
} else
{
// Its a new route so create it
route = Route()
route.locations = points
route.routeType = routeType
route.startingCoordinate = points2D.first!
route.startingLocation = points.first!
}

但是此代码在

上崩溃
            if (self._userRoutes.last?.routeType == self._currentActivityType)

EXC_BAD_INSTRUCTION

我什至尝试打印出所有变量,它们都打印得很好,然后它又返回并仍然崩溃。

正如您在下面看到的,它打印了所有 3 个打印,然后返回 2 行以抛出崩溃错误?!

enter image description here

所以我想知道问题可能是什么,如果您有任何想法,我会洗耳恭听!需要明确的是,我不想在查找以前的用户路由时得到 EXC_BAD_INSTRUCTION。

更新

为了更明确地检查用户路由是否为零(并且它崩溃),正如你所看到的,它只打印了一次“HERE”,但它确实返回到堆栈中崩溃。 enter image description here

但是,如果我将 return 语句放在那里(自然),应用程序不会崩溃。

所以我可以得出的结论是,该错误是由于尝试解开 nil 引起的,但存在源映射问题,在这种情况下发生崩溃。

更新2

这是所有起作用的变量的打印输出

User Routes: [] //_userRoutes
User Route Count: 0 // _userRoutes.count
User Route last: nil // _userRoutes.last
User Route last type: nil // _userRoutes.last?.routeType

更新3

我刚刚在 (lldb) 之前开始收到此消息

AppName was compiled with optimization - stepping may behave oddly; variables may not be available.

最佳答案

我认为您感到困惑,因为您收到了对 locationManager:manager:didUpdateLocations 的多次调用。第一次调用时 _userRoutes 不是 nil,而是 _userRoutes.last 是,这就是打印为 nil 的内容。我认为没有任何事情“返回”,我认为正在发生第二次调用,在这种情况下 _userRoutes 为零,并在您尝试调用 _userRoutes.last 时导致崩溃。

打印出 _userRoutes 来确认这一点,如果没有,请发布更多代码来显示 _userRoutes 的设置方式。

关于ios - EXC_BAD_INSTRUCTION 在 Swift 中对于 locationManager 崩溃(经理 : CLLocationManager, didUpdateLocations 位置:[CLLocation]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32641101/

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