2013-09-27 23 views
5

Wysłałem aplikację i uzyskać odrzucił mówiącEXC_BAD_ACCESS (SIGSEGV) - KERN_INVALID_ADDRESS

Okazało się, że aplikacja rozbił się na iPad z systemem iOS 7, który nie jest zgodny z wytycznymi recenzja App Store.

Cóż, kiedy przesyłałem, system iOS7 nie został uruchomiony.

Raport krach mówi

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Subtype: KERN_INVALID_ADDRESS at 0xb1b1f20b 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x3a2f5b26 objc_msgSend + 6 
1 MapKit       0x30ca46a6 -[MKMapView mapViewDidFinishLoadingTiles:] + 46 
2 VectorKit      0x376bbaf4 -[VKTileSource didFinishWithNetwork] + 68 
3 VectorKit      0x376bc196 __32-[VKTileSource performDownload:]_block_invoke126 + 38 
4 GeoServices      0x345b6fdc ___ZNK49-[GEOTileLoaderInternal _loadedTile:forKey:info:]66__49-[GEOTileLoaderInternal _loadedTile:forKey:info:]_block_invoke3$_1clERKN8LoadItem9RequesterE_block_invoke_2 + 52 
5 libdispatch.dylib    0x3a7ddd78 _dispatch_call_block_and_release + 8 
6 libdispatch.dylib    0x3a7ddd64 _dispatch_client_callout + 20 
7 libdispatch.dylib    0x3a7e47bc _dispatch_main_queue_callback_4CF$VARIANT$mp + 264 
8 CoreFoundation     0x2fab881c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4 
9 CoreFoundation     0x2fab70f0 __CFRunLoopRun + 1296 
10 CoreFoundation     0x2fa21ce2 CFRunLoopRunSpecific + 518 
11 CoreFoundation     0x2fa21ac6 CFRunLoopRunInMode + 102 
12 GraphicsServices    0x3471c27e GSEventRunModal + 134 
13 UIKit       0x322c3a3c UIApplicationMain + 1132 

W wypadku widzimy MapKit 0x30ca46a6 -[MKMapView mapViewDidFinishLoadingTiles:].

Czy występuje problem z mapą?

Dla mapkit, poniżej jest to, co mam

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.title = @"Location"; 
    // Do any additional setup after loading the view. 
    CLLocationCoordinate2D cords = {29.32511601390379, 48.08847418705136}; 
    MKCoordinateSpan span = {0.008400,0.008400}; 
    region = (MKCoordinateRegion) {cords,span}; 
    mapView.showsUserLocation = YES; 
    [mapView setRegion:region animated:YES]; 
    [mapView setDelegate:self]; 

    DisplayMap *ann = [[DisplayMap alloc] init]; 
    ann.coordinate = region.center; 
    [mapView addAnnotation:ann]; 
} 

Również nie mam dealloc w mapkitviewcontroller. To dobrze? Pytam, ponieważ ten błąd związany jest z zarządzaniem pamięcią.

Moja aplikacja miała 5 kart. Pierwsze 4 karty to tylko UIWebView. W celu wyświetlenia strony internetowej stwierdziłem, że nie wyświetlałem widoku w dealloc. Poniżej jest to, co miałem w webview,

- (void)dealloc { 
    [super dealloc]; 
} 

W tej chwili nie mam również iOS 7 na moim xcode. Muszę to pobrać, ale pomyślałem o tym wcześniej.

Uwaga: Wszystko jest doskonale współpracuje z iOS 6.

Wszelkie domysły dlaczego ja dostaję ten błąd?

Odpowiedz

0

Po umieszczeniu mapView w dealloc, problem zostanie rozwiązany.

W toku dalszego dochodzenia zauważyłem również, że nie dodałem tytułu do DisplayMap.

DisplayMap *ann = [[DisplayMap alloc] init]; 
ann.title = @"My Location"; 
+1

Czy wyraźnie to zignorowałeś? Mam ten sam problem, widząc awarię w raporcie na temat Crittercism, ale nie mogąc odtworzyć go samodzielnie –

+0

@HenrikHartz: wcześniej miałem 'ann.title = @" "' –

+0

@HenrikHartz znalazłeś przyczynę? Widzę ten sam problem w raporcie Crashlytics, ale nie mogę go odtworzyć – Chris

4

Ustawia delegat widoku mapy na zero przed przejściem ze strony. Myślę też, że istnieje problem zarządzania pamięcią z mapami IOS. Więc lepiej jest wydać mapy w metodzie dealloc.

+0

hmmm ... ja też tak myśleć ... –

+0

I rozwiązany przez ustawienie widoku mapy delegata do zera wewnątrz metody dealloc mojego delegata. Nie ma to dla mnie większego sensu, ponieważ wdrożenie MKMapView przez Apple powinno utrzymywać słabe odniesienie do delegata. Ale kto wie, może jest jakiś błędny kod w implementacji MKOSap iOS 7. – Chris