2011-08-09 218 views
2

我有我打電話viewDidLoad中的一個模式視圖控制器的MKMapView的實例:的MKMapView在模態視圖控制器

mapView = [[MKMapView alloc] init]; 
mapView.showsUserLocation = YES; 
mapView.delegate = self; 

我只是創建它,所以我可以調用ReverseGeocoder反對,並得到一個位置(標)。它被視圖所保留,並且在第一次呈現視圖時它可以正常工作。我重新使用UITableView中的不同項目調用的視圖,全部以模態方式呈現。在第一次調用之後,以後的調用都不起作用。我正在撓頭,想知道發佈池是否有問題。

當視圖調用viewDidUnload,我設置委託給無:

self.mapView.delegate = nil; 
self.reverseGeocoder.delegate = nil; 

任何想法或我丟失的東西?

回答

0

我寧願考慮在你的init方法中創建這個對象,並在dealloc中釋放它,而不用擔心在視圖加載時它是否存在。無論您是否在屏幕上顯示,您都可以使用init方法進行分配,然後只要將其添加到viewDidLoad的視圖中(如果您選擇)即可。

+0

這是一個很好的觀點。我確實給了一槍。我還發現,有時MKMapKit泄漏,所以我試圖分配它在我的應用程序委託,然後複製它。相同的結果。我可以嘗試一些更多的想法,比如:@property(nonatomic,assign)MKMapView * mapView; – indigosplinter

+0

解決方案:自iOS 4.3開始,在您釋放MapView之前強制需要清空MapView。我加了self.mapview = nil;在釋放被調用之前,它工作得很好。 – indigosplinter