0

我无法在我的应用程序中找到错误,因为它仅在临时安装后才出现。我已将其范围缩小为[self.mapview removeOverlay:overlay];'[self.mapview addOverlay:overlay]。如果我通过 Xcode (4.6.1) 安装和调试,具有完全相同步骤的完全相同的代码可以在几分钟前工作。我不会在测试之间更改任何其他设置。我只是存档并分发应用程序,或者我按下运行按钮并将其推送到我的 iPad。一次有效,一次失败。

Xcode->device = 覆盖可以随心所欲 Xcode->adhoc->server->device = 当我尝试删除可见覆盖或添加地图现在可以看到的区域内的覆盖时,应用完全冻结

我查看了设备上的崩溃日志,它总是在 [MKOverlayClusterView didAddSubview:] 或 [MKOverlayClusterView willRemoveSubview:]

这是崩溃日志中显示的主线程

0   libsystem_kernel.dylib        0x3c4ff27c __psynch_rw_wrlock + 24
1   libsystem_c.dylib             0x3c44fbd6 pthread_rwlock_wrlock + 334
2   MapKit                        0x34fb321e -[MKOverlayClusterView willRemoveSubview:] + 50
3   UIKit                         0x3614b2d2 __UIViewWillBeRemovedFromSuperview + 126
4   UIKit                         0x35f93844 -[UIView(Hierarchy) removeFromSuperview] + 52
5   MapKit                        0x34fae5b0 -[MKOverlayContainerView _removeOverlayView:forOverlay:coalesce:] + 24
6   MapKit                        0x34fae118 -[MKOverlayContainerView removeOverlays:] + 240

值得注意的是,在两个添加/删除变体中,堆栈的最后一个顶部是相同的,所以这可能是 pthread_rwlock_wrlock 的问题,这意味着我在某些时候已经越过了线程。我试图通过使用 [self performSelectorOnMainThread:@selector(mainThreadRemoveOverlays:) withObject:@[overlay] waitUntilDone:YES]; 但是当通过 adhoc 方法安装应用程序时崩溃一直发生,并且在通过 Xcode 调试时永远不会发生。

4

1 回答 1

0

我有类似的问题。我正在向地图添加地图叠加层。测试时工作正常,但不适用于 Ad hoc 部署。我的解决方案是我放错了箱子。当文件名实际上是 Map.jpeg 时,我正在使用 map.jpeg。

地图.jpeg != 地图.jpeg

由于地图正在进行测试,我只是假设这是正确的名称。我花了一段时间才发现这是问题所在。不知道为什么我的 iPhone 5 或模拟器没有选择这个。

在部署之前清理你的项目也是很好的。

希望这可以帮助

于 2013-04-18T10:44:49.220 回答