yandexmobile / yandexmapkit-ios

Yandex Map Kit for iOS
Other
173 stars 30 forks source link

Крэш при смене карты #108

Open SergeyCHiP opened 11 years ago

SergeyCHiP commented 11 years ago

В моей программе можно сменить карту Яндекс на Гугл и обратно. Когда меняется карта с яндекса на гугл, объект вида карты Яндекса удаляется и дальше крэшится, как я понял из-за подписки делегата, после вызова -[YMKUserLocationController notifyDelegateAboutUserLocationUpdate]

не знаю имеет ли значение но прежде чем удалить объект вьювера карты я делал как в примере и вызывал метод stopMonitoringLocationFetching

Помогите решить проблему, пожалуйста.

uranpro commented 10 years ago

Повторяется

EXC_BAD_ACCESS
-[YMKUserLocationController notifyDelegateAboutUserLocationUpdate] + 166 at YMKUserLocationController.m:515
erudenko commented 10 years ago

Подтверждаю проблему, у меня тоже крэшиться часто по отчетам. Вот крэшлог:

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)
khramtsoff commented 9 years ago

В отчетах светился этот крэш, удалось воспроизвести. Была MyView которая хостила subview YMKMapView, в dealloc'e как и полагается _mapView.delegate = nil, а в методе ниже этой строчки не хватало

- (void)didChangeMapType {
    if (self.mapView) {
        [self.mapView removeFromSuperview];
    }
    self.mapView = [self createMap];
}
cooler333 commented 8 years ago

Та же проблема. Спасибо за ответ!