Open SergeyCHiP opened 11 years ago
Повторяется
EXC_BAD_ACCESS
-[YMKUserLocationController notifyDelegateAboutUserLocationUpdate] + 166 at YMKUserLocationController.m:515
Подтверждаю проблему, у меня тоже крэшиться часто по отчетам. Вот крэшлог:
Thread : Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x38990626 objc_msgSend + 5
1 TopMission 0x003272f9 -[YMKUserLocationController notifyDelegateAboutUserLocationUpdate] (YMKUserLocationController.m:512)
2 TopMission 0x00326967 -[YMKUserLocationController locationAnnotationLocationChanged] (YMKUserLocationController.m:307)
3 TopMission 0x00326ea7 -[YMKUserLocationController observeValueForKeyPath:ofObject:change:context:] (YMKUserLocationController.m:435)
4 Foundation 0x2eb26891 NSKeyValueNotifyObserver + 272
5 Foundation 0x2eb26535 NSKeyValueDidChange + 344
6 Foundation 0x2eb12b65 -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 88
7 TopMission 0x00327d13 -[YMKUserLocationController setUserLocationToNext] (YMKUserLocationController.m:708)
8 TopMission 0x00326f8f -[YMKUserLocationController locationManager:locationUpdatedTo:] (YMKUserLocationController.m:469)
9 CoreLocation 0x2e6b5a2b CLLocationCoordinate2DGetDistanceFrom + 19230
10 CoreLocation 0x2e6b1aeb CLLocationCoordinate2DGetDistanceFrom + 3038
11 CoreLocation 0x2e6ab081 CLClientInvalidate + 944
12 CoreFoundation 0x2e1bd015 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
13 CoreFoundation 0x2e1bc38f __CFRunLoopDoBlocks + 242
14 CoreFoundation 0x2e1baff9 __CFRunLoopRun + 1488
15 CoreFoundation 0x2e1257a9 CFRunLoopRunSpecific + 524
16 CoreFoundation 0x2e12558b CFRunLoopRunInMode + 106
17 GraphicsServices 0x330926d3 GSEventRunModal + 138
18 UIKit 0x30a84891 UIApplicationMain + 1136
19 TopMission 0x000be4eb main (main.m:16)
В отчетах светился этот крэш, удалось воспроизвести. Была MyView которая хостила subview YMKMapView, в dealloc'e как и полагается _mapView.delegate = nil, а в методе ниже этой строчки не хватало
- (void)didChangeMapType {
if (self.mapView) {
[self.mapView removeFromSuperview];
}
self.mapView = [self createMap];
}
Та же проблема. Спасибо за ответ!
В моей программе можно сменить карту Яндекс на Гугл и обратно. Когда меняется карта с яндекса на гугл, объект вида карты Яндекса удаляется и дальше крэшится, как я понял из-за подписки делегата, после вызова -[YMKUserLocationController notifyDelegateAboutUserLocationUpdate]
не знаю имеет ли значение но прежде чем удалить объект вьювера карты я делал как в примере и вызывал метод stopMonitoringLocationFetching
Помогите решить проблему, пожалуйста.