2013-04-15 16 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