Мне нужна помощь в случае сбоя MKMapView - PullRequest
8 голосов
/ 01 ноября 2010

Одним из наиболее частых сбоев моего живого приложения является сбой в MKMapView.Вылетает при внутреннем методе -[MKMapView mapTileViewDidFinishLoading:].Во время теста я не смог отследить сбой, но очень часто в отчетах о сбоях в iTunes Connect.Есть ли у кого-нибудь опыт с этой аварией?Это только очень простая карта, показывающая ровно одну аннотацию.

Вот полная трассировка стека этой аварии:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000009
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x339737d8 objc_msgSend + 16
1   MapKit                          0x345709ec -[MKMapView mapTileViewDidFinishLoading:]
2   CoreFoundation                  0x344492e4 -[NSObject(NSObject) performSelector:withObject:]
3   Foundation                      0x3326981e __NSThreadPerformPerform
4   CoreFoundation                  0x34460f1e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
5   CoreFoundation                  0x34432ba0 __CFRunLoopDoSources0
6   CoreFoundation                  0x34432444 __CFRunLoopRun
7   CoreFoundation                  0x34432270 CFRunLoopRunSpecific
8   CoreFoundation                  0x34432178 CFRunLoopRunInMode
9   GraphicsServices                0x3026b5ec GSEventRunModal
10  GraphicsServices                0x3026b698 GSEventRun
11  UIKit                           0x31ad011c -[UIApplication _run]
12  UIKit                           0x31ace128 UIApplicationMain
13  MYApp                           0x00002e08 main + 36
14  MYApp                           0x00002dd8 start + 32 

Ответы [ 3 ]

11 голосов
/ 02 ноября 2010

Я думаю, что мог исправить эту проблему в своем собственном приложении.Похоже, что это сообщение имеет правильное решение и объяснение.

Сообщение, которое вызвало сбой в моем приложении, было 'mapViewDidFinishLoadingMap', которое является сообщением MKMapViewDelegate.Попробуйте установить делегат mapView равным 'nil', прежде чем в вашем методе dealloc views.

2 голосов
/ 18 апреля 2013

Просто сделайте это, это решит проблему 100%

-(void) viewWillDisappear:(BOOL)animated
{
    self.mapView.delegate = nil;
    mapView=Nil;
    NSLog(@"viewWillDisappear");

}
0 голосов
/ 28 июля 2011

Мне также пришлось установить делегат равным nil в viewDidDisappear, чтобы исправить проблему.

...