gpt4 book ai didi

xcode - MKMapView setRegion : animated: crashes the app (edited)

转载 作者:行者123 更新时间:2023-12-04 05:15:05 25 4
gpt4 key购买 nike

我有一个 MKMapView,它在点击时(使用 UITapGestureRecognizer)扩展(垂直)并在 pan 上触发 api 调用(使用 UIPanGestureRecoginizer)。

一切正常,直到一段时间后,在平移时,应用程序会崩溃,几乎没有任何有用的信息(或我可以理解的信息)

异常断点已开启,僵尸对象已启用。在崩溃时,它永远不会遇到异常断点!

这是日志:
(平移开始、平移、平移结束基于平移手势识别器状态打印出来)。
平移结束后,应用程序立即崩溃。
( map 尚未加载其所有图块,并且尚未调用 regionDidChangeAnimated):

2013-01-17 14:46:04.396 MyApp[13126:c07] Panning Began
2013-01-17 14:46:04.412 MyApp[13126:c07] Panning
2013-01-17 14:46:04.412 MyApp[13126:c07] Panning
2013-01-17 14:46:04.557 MyApp[13126:c07] Panning
2013-01-17 14:46:04.606 MyApp[13126:c07] Panning
2013-01-17 14:46:04.691 MyApp[13126:c07] Panning Ended
2013-01-17 14:46:04.692 MyApp[13126:c07] *** -[MKMapViewPositioningChange hasChanges]: message sent to deallocated instance 0x139f7520

这是我在崩溃后看到的回溯:
(lldb) bt
* thread #1: tid = 0x1c03, 0x02a4fa97 CoreFoundation`___forwarding___ + 295, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
frame #0: 0x02a4fa97 CoreFoundation`___forwarding___ + 295
frame #1: 0x02a4f94e CoreFoundation`_CF_forwarding_prep_0 + 14
frame #2: 0x01244d27 MapKit`-[MKMapView(UserPositioningInternal) _runPositioningChange] + 2037
frame #3: 0x01242dd7 MapKit`-[MKMapView(UserPositioningInternal) _runPositioningChangeIfNeeded:] + 86
frame #4: 0x01240220 MapKit`-[MKMapViewInternal runPositioningChangeIfNeeded] + 50
frame #5: 0x01e2eb90 Foundation`__NSFireTimer + 97
frame #6: 0x02a1f376 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22
frame #7: 0x02a1ee06 CoreFoundation`__CFRunLoopDoTimer + 534
frame #8: 0x02a06a82 CoreFoundation`__CFRunLoopRun + 1810
frame #9: 0x02a05f44 CoreFoundation`CFRunLoopRunSpecific + 276
frame #10: 0x02a05e1b CoreFoundation`CFRunLoopRunInMode + 123
frame #11: 0x03c897e3 GraphicsServices`GSEventRunModal + 88
frame #12: 0x03c89668 GraphicsServices`GSEventRun + 104
frame #13: 0x0132d65c UIKit`UIApplicationMain + 1211
frame #14: 0x0001223d MyApp`main + 141 at main.m:16
frame #15: 0x00002fc5 MyApp`start + 53

当我连接 PanGestureRecognizer 操作方法时,崩溃就消失了。

有没有办法在使用手势识别器时摆脱这种崩溃?或者有没有办法知道 map 被点击和平移,而不使用 GestureRecognizers?

任何帮助/问题/答案/评论表示赞赏!

更新(1 月 19 日):这似乎根本不是平移手势识别器的问题。现在我在尝试向 map View 添加新注释后崩溃,调用 [MapView setRegion:animated:],并在 regionDidChangeAnimated 被击中之前崩溃,在崩溃点使用相同的 [MKMapViewPositioningChange hasChanges] 日志.

更新(1 月 23 日):我想我很确定发生了什么。有一大段代码试图将区域设置为包含 MKMapView 的可见矩形中的所有注释,以及我正在调用的其他一些位置 [myMapView removeAnnotations:[myMapView annotations]]。而且,我的猜测是,这两个 Action 最终导致了一次令人讨厌的空中碰撞,没有留下任何导致坠机的线索。如果我的预感通过 QA,将用答案更新问题

最佳答案

正如我之前猜到的(问题的第二次更新),这是尝试添加设置 map 区域以显示所有注释并同时删除所有注释的问题。如果您正在调用 setRegion:animated: ,请确保检查 mapView 是否至少有一个注释。

此外,明智地使用以下代码会很有帮助,尤其是当您根据注释在 map 上执行任何类型的动画时。

[MKMapView removeAnnotations:[MKMapView 注释]];

关于xcode - MKMapView setRegion : animated: crashes the app (edited),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14390708/

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