簡體   English   中英

當我使用popviewcontroller時,MKMapView崩潰

[英]Crash with MKMapView when i use popviewcontroller

我的申請書有問題。

您需要在-viewDidUnload:地圖視圖的delegate屬性設置為nil 發生這種崩潰的原因是,地圖視圖嘗試向其消息傳遞委托,即視圖控制器,但是一旦將其從堆棧中彈出,就已經被釋放了。

蘋果甚至在《 MKMapViewDelegate協議參考》中提到了這一點。

在釋放為其設置了委托的MKMapView對象之前,請記住將對象的delegate屬性設置為nil 您可以在-dealloc方法中執行此操作的一個地方是在其中處置地圖視圖。

他們建議在-dealloc取消delegate ,但由於ARC, -viewDidUnload是前進的最佳選擇。

- (void)viewDidUnload
{
    self.mapView.delegate = nil;
    self.locationManager.delegate = nil;
    [super viewDidUnload];
}

當使用接收委托調用的對象時,這是一個常見問題。 問題是視圖控制器被釋放后,它仍然收到來自其對象之一的調用,如錯誤消息所示。 您需要重寫視圖控制器的viewDidUnload方法(更不用說為某些內存管理使用dealloc了),並且需要在其中放置類似以下內容的代碼:

yourMapView.delegate = nil;
yourLocationManager.delegate = nil;

通過將這些對象的委托設置為nil,它們將在卸載此視圖控制器時停止向其分配的委托發送更新,因此您的應用程序將停止崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM