2010-12-14 33 views
1

我有一個非常簡單的應用程序。 1個帶有2個viewControllers的navigationController。爲什麼使用mapview發生奇怪的崩潰?

第一個視圖只有一個按鈕。 第二個視圖有一個地圖視圖(MKMapView)。 我檢查了此地圖視圖的顯示currentlocation屬性 我創建了outlet,然後使用Builder Interface連接所有內容。

在第二個的dealloc方法中,我將nil設置爲mapview的委託,然後釋放mapview outlet。

mapView.delegate = nil; [mapview release];

當我點擊view1中的按鈕,view2將被加載,然後我點擊返回按鈕。如果我通常這樣做,一切運作良好。但如果我很快就做,重複多次。該應用程序將崩潰。 如果我不發佈mapView或者我不檢查showcurrentlocation屬性,應用程序運行良好。

我不明白爲什麼會發生這種情況。任何人都可以幫我解決這個問題非常感謝 !

回答

0

嘗試通過儀器添加殭屍工具啓動您的應用程序。它應該顯示你過分的對象。您還應該添加帶虛擬機跟蹤器的Allocations儀器,以查看內存消耗如何隨時間推移。這樣你就能很快得到你的答案。

p.s.更多的代碼會更好。

+0

我已經調查這個問題,得到的答覆是:這是的MKMapView的錯誤。我們可以通過以下方法解決這個問題:爲MKMapView對象創建靜態即時,或者調用延遲方法釋放mapView大約4秒。 – 2010-12-20 02:58:31

2

我的控制器級修補是..

(void)dealloc 
{ 
    mapView.showUserLocation = NO; // Work around bug in MKMapView 
    [super dealloc]; 
}