Skip to content

MapKit Crash getting User Location

I started getting this crash – only on ad hoc builds – not sim, not debug device builds (from Xcode Organizer)…

[code]
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000
Crashed Thread: 0

Thread 0 Crashed:
0 libobjc.A.dylib 0x00003ec0 objc_msgSend + 24
1 MapKit 0x00032960 -[MKMapView(UserPositioningInternal) locationManagerUpdatedLocation:] + 1032
2 CoreFoundation 0x0005da0e -[NSObject performSelector:withObject:] + 18
3 CoreFoundation 0x00062a04 -[NSArray makeObjectsPerformSelector:withObject:] + 368
4 MapKit 0x000028e8 -[MKLocationManager _reportLocationStatus:] + 52
5 MapKit 0x00004e74 -[MKLocationManager _reportLocationSuccess] + 48
6 MapKit 0x000049c0 -[MKLocationManager locationManager:didUpdateToLocation:fromLocation:usingSupportInfo:] + 936
7 CoreLocation 0x00009af4 -[CLLocationManager onClientEventLocation:] + 1132
8 CoreLocation 0x00008020 -[CLLocationManager onClientEvent:supportInfo:] + 140
9 CoreLocation 0x000081ac OnClientEventInternal + 24
10 CoreLocation 0x00005e48 CLClientHandleDaemonData(__CFMessagePort*, long, __CFData const*, void*) + 1080
11 CoreFoundation 0x00030380 __CFMessagePortPerform + 112
12 CoreFoundation 0x00057524 CFRunLoopRunSpecific + 2296
13 CoreFoundation 0x00056c18 CFRunLoopRunInMode + 44
14 GraphicsServices 0x0000436c GSEventRunModal + 188
[/code]

The problem seemed to be the MKMapView getting deallocated w/o remove the delegate.

I added a call to set the delegate to nil in my dealloc method and things worked.

I wonder why a) this isn’t a problem for other classes and/or b) does the IB backend handle setting other classes delegate’s to nil?