2011-08-09 4 views
2

내가 모달 뷰 컨트롤러의 viewDidLoad에서 전화 드렸습니다 MkMapView의 인스턴스가 있습니다MkMapView 모달에서의 ViewController

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를 종료하지 않아도됩니다. 나는 self.mapview = nil을 추가했다. 릴리스가 호출되기 전에 제대로 작동했습니다. – indigosplinter