2013-04-15 17 views
0

我无法在我的应用程序找到一个错误,因为它只是一个即席安装后提出了自己。我已将其缩小到[self.mapview removeOverlay:overlay];和'[self.mapview addOverlay:overlay]。如果我通过Xcode(4.6.1)进行安装和调试,那么完全相同的代码完全相同的步骤只需几分钟。我不会在测试之间更改任何其他设置。我只是存档和分发应用程序,或者我按下运行按钮,它会被推送到我的iPad。一次有效,一次失败。的MKMapView removeOverlay崩溃的Ad Hoc分布 - 不是在开发建设

Xcode->设备=覆盖可以来来去去,我想 Xcode-> adhoc->服务器 - >设备=完整的应用程序冻结当我尝试删除可见覆盖或添加一个是该地区的地图内可以看到,现在

我看设备上的崩溃日志,并在[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进行调试时从不发生。

回答

0

我有类似的问题。我正在为地图添加地图叠加层。 测试时工作正常,但不适用于临时部署。我的解决办法是我犯了错误的情况。当文件名实际上是Map.jpeg时,我使用了map.jpeg。

Map.jpeg!= map.jpeg

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

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

希望这可以帮助

+0

O.M.G.我认为你的“在部署前清理你的项目也很好。”解决了它。我一直在想这个。赶快行动吧!我今晚会做更多的测试,但我很确定你只是给自己一个奖金! – Craig

+0

Yay谢谢。从来没有回答过与赏金问题:P – Will

+0

看来我跳了枪。在做干净的同时,我还通过定义函数ELog来重新启用调试。我忙于等待,只有一个ELog调用(非常简单的锁定过程),似乎没有什么在循环中应用程序在ad-hoc模式下崩溃。有了循环中的东西,它可以在ad-hoc模式下正常运行而不需要清理。我现在已经转向正确使用NSLock。 – Craig