Tôi có một bộ điều khiển xem với một MKMapView mà các cuộc gọiMKMapView treo ứng dụng khi xem bộ điều khiển popped
[self.mapView setRegion:region animated:YES];
mà lại vị trí bản đồ từ A đến B.
Quan điểm điều khiển mà giữ MKMapView được thiết lập như người được ủy quyền và trong số
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
Tôi có một số mã sẽ kích hoạt một setRegion khác: hoạt ảnh: tới MKMapView để bản đồ sẽ tự động phóng to vị trí mới.
Mọi thứ hoạt động tốt nếu tôi popViewControllerAnimated: bộ điều khiển chế độ xem SAU hoạt ảnh MKMapView được thực hiện xoay và thu phóng.
Tuy nhiên, khi tôi cố gắng popViewControllerAnimated: trình điều khiển chế độ xem hiện tại WHILE MKMapView đang chạy hình động, ứng dụng gặp sự cố với "thư được gửi tới phiên bản được phân phối".
Từ giao diện của trình gỡ lỗi, tôi nghĩ rằng MKMapView đang cố gắng gọi một phương thức từ đại biểu được phân phối và phân phối.
Vì vậy, tôi đã cố gắng
[self.mapView setDelegate:nil];
self.mapView = nil;
trong viewDidUnload không có may mắn. Ứng dụng vẫn gặp sự cố nhất quán. Điều duy nhất tôi có thể nghĩ đến là tạo ra một lớp đại biểu mới riêng biệt và giữ lại lớp đó từ bộ điều khiển xem cha để MKMapView sẽ có một đại biểu để gọi ngay cả sau khi bộ điều khiển xem có chứa nó được deallocated.
Tại sao điều này lại xảy ra? Có tùy chọn "sạch" nào khác không?
Điều này thật thú vị. Ứng dụng của chúng tôi đang bị tê liệt bởi các sự cố rắc rối xảy ra khi một MKMapView gọi cho đại biểu để có được chế độ xem cho chú thích. Vấn đề là ở đó không có MKMapView nào tồn tại; hoặc không nên có. Bộ điều khiển có chứa nó từ lâu đã được xuất hiện. Tự hỏi nếu đó là cùng một vấn đề. – Oscar
Dường như cùng một vấn đề như sau: http://stackoverflow.com/questions/2188098/why-am-i-crashing-after-mkmapview-is-freed-if-im-no-longer-using-it – Oscar