[self.mapView setRegion:region animated:YES];
其重新定位在地圖從A到B
其保持的MKMapView被設置爲視圖控制器一個的MKMapView視圖控制器委託和
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
我有一些代碼,會觸發另一個setRegion:動畫:到的MKMapView如此,地圖將自動放大新的位置。
一切工作正常,如果我popViewControllerAnimated:視圖控制器後,MKMapView動畫完成平移和縮放。
但是,當我嘗試popViewControllerAnimated:當前視圖控制器WHILE MKMapView運行它的動畫時,應用程序崩潰與「消息發送到釋放實例」。
從調試器的外觀來看,我認爲MKMapView試圖從彈出和釋放的委託調用方法。
所以我在viewDidUnload試圖
[self.mapView setDelegate:nil];
self.mapView = nil;
沒有運氣。該應用程序仍然一直崩潰。
我唯一能想到的就是創建一個單獨的新委託類,並從父視圖控制器中保留該類,以便MKMapView有一個委託即使在包含它的視圖控制器被釋放後也可以調用。
這是怎麼發生的? 有沒有其他的「乾淨」選項?
這很有趣。我們的應用程序被MKMapView調用委託以獲取註釋視圖時發生的令人困惑的崩潰而癱瘓。問題在於那時沒有MKMapView存在;或者不應該有。包含它的控制器早已被彈出。不知道是否是同樣的問題。 – Oscar
看起來像這樣的問題:http://stackoverflow.com/questions/2188098/why-am-i-crashing-after-mkmapview-is-freed-if-im-no-longer-using-it – Oscar