iosobjective-cxcodemkmapview

MKMapView crashes by setRegion


i want to show a specific adress on the Map. Here is my code.

- (void)viewDidLoad{
[super viewDidLoad];

CLLocationCoordinate2D startCoord = CLLocationCoordinate2DMake(51.514302, 7.616798);
MKCoordinateRegion adjustedRegion = [_map regionThatFits:MKCoordinateRegionMakeWithDistance(startCoord, 200.0, 200.0)];
adjustedRegion.span = MKCoordinateSpanMake(0.005, 0.005);

[_map setRegion:adjustedRegion];

On the Simulator it works fine but on my iPad it crashes... Where is my fault?

Last Exception Backtrace:
0   CoreFoundation                  0x33cbe3e2 __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x3bb4e95e objc_exception_throw + 26
2   CoreFoundation                  0x33cbe0d0 -[NSException raise] + 4
3   MapKit                          0x34aec530 -[MKMapView setRegion:animated:] + 672
4   MapKit                          0x34aec64a __32-[MKMapView setRegion:animated:]_block_invoke_0 + 90
5   MapKit                          0x34ad6006 -[MKMapView _updateCenteredAttributesWithCoordinate:] + 122
6   MapKit                          0x34ad5f3a -[MKMapView _sizeDidChangeWithCenterCoordinate:] + 126
7   MapKit                          0x34ae8b58 -[MKMapView setBounds:] + 224
8   UIKit                           0x35cb2476 -[UIView(Geometry) _applyISEngineLayoutValues] + 246
9   UIKit                           0x35b3068a -[UIView(Geometry) _resizeWithOldSuperviewSize:] + 138
10  CoreFoundation                  0x33cb9c1c __NSArrayChunkIterate + 364
11  CoreFoundation                  0x33cb2bb2 __NSArrayEnumerate + 590
12  CoreFoundation                  0x33c14e32 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 58
13  UIKit                           0x35ae9096 -[UIView(Geometry) resizeSubviewsWithOldSize:] + 114
14  UIKit                           0x35f09da8 -[UIView(AdditionalLayoutSupport) _is_layout] + 112
15  UIKit                           0x35ad6ae0 -[UIView(Hierarchy) layoutSubviews] + 68
16  UIKit                           0x35ad08c2 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 254
17  QuartzCore                      0x3587c50e -[CALayer layoutSublayers] + 210
18  QuartzCore                      0x3587c0b0 CA::Layer::layout_if_needed(CA::Transaction*) + 456
19  QuartzCore                      0x358aaeca -[CALayer layoutIfNeeded] + 138
20  UIKit                           0x35b7a0dc -[UIViewController window:setupWithInterfaceOrientation:] + 204
21  UIKit                           0x35b792c6 -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:isRotating:] + 3598
22  UIKit                           0x35b784aa -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 42
23  UIKit                           0x35b78434 -[UIWindow _setRotatableViewOrientation:duration:force:] + 64
24  UIKit                           0x35cadcb4 __57-[UIWindow _updateToInterfaceOrientation:duration:force:]_block_invoke_0 + 100
25  UIKit                           0x35b3667e -[UIWindow _updateToInterfaceOrientation:duration:force:] + 214
26  UIKit                           0x35b363c2 -[UIWindow setAutorotates:forceUpdateInterfaceOrientation:] + 690
27  UIKit                           0x35b35d2a -[UIViewController _tryBecomeRootViewControllerInWindow:] + 150
28  UIKit                           0x35b2ce86 -[UIWindow addRootViewControllerViewIfPossible] + 366
29  UIKit                           0x35b28af0 -[UIWindow _setHidden:forced:] + 360
30  UIKit                           0x35b6a1dc -[UIWindow makeKeyAndVisible] + 56
31  UIKit                           0x35b2d7fe -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1642
32  UIKit                           0x35b2582e -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 694
33  UIKit                           0x35acdd1a -[UIApplication handleEvent:withNewEvent:] + 1006
34  UIKit                           0x35acd7a8 -[UIApplication sendEvent:] + 68
35  UIKit                           0x35acd1ea _UIApplicationHandleEvent + 6194
36  GraphicsServices                0x377c05f2 _PurpleEventCallback + 586
37  GraphicsServices                0x377c0222 PurpleEventCallback + 30
38  CoreFoundation                  0x33c933e2 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 30
39  CoreFoundation                  0x33c93386 __CFRunLoopDoSource1 + 134
40  CoreFoundation                  0x33c9220a __CFRunLoopRun + 1378
41  CoreFoundation                  0x33c05238 CFRunLoopRunSpecific + 352
42  CoreFoundation                  0x33c050c4 CFRunLoopRunInMode + 100
43  UIKit                           0x35b24468 -[UIApplication _run] + 664
44  UIKit                           0x35b212b4 UIApplicationMain + 1116
45  AD HOK                          0x000bcd80 main (main.m:16)
46  libdyld.dylib                   0x3bf7bb1c start + 0


Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3c042350 __pthread_kill + 8
1   libsystem_c.dylib               0x3bfb8fb2 pthread_kill + 54
2   libsystem_c.dylib               0x3bff5366 abort + 90
3   libc++abi.dylib                 0x3b59ddda abort_message + 70
4   libc++abi.dylib                 0x3b59b094 _ZL17default_terminatev + 20
5   libobjc.A.dylib                 0x3bb4ea58 _ZL15_objc_terminatev + 144
6   libc++abi.dylib                 0x3b59b118 _ZL19safe_handler_callerPFvvE + 76
7   libc++abi.dylib                 0x3b59b1b0 std::terminate() + 16
8   libc++abi.dylib                 0x3b59c626 __cxa_rethrow + 90
9   libobjc.A.dylib                 0x3bb4e9b0 objc_exception_rethrow + 8
10  CoreFoundation                  0x33c0529c CFRunLoopRunSpecific + 452
11  CoreFoundation                  0x33c050c4 CFRunLoopRunInMode + 100
12  UIKit                           0x35b24468 -[UIApplication _run] + 664
13  UIKit                           0x35b212b4 UIApplicationMain + 1116
14  AD HOK                          0x000bcd80 main (main.m:16)
15  libdyld.dylib                   0x3bf7bb1c start + 0

Thread 1:
0   libsystem_kernel.dylib          0x3c042d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3bf90ad6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3bf907f2 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3bf90680 start_wqthread + 4

Thread 2 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0   libsystem_kernel.dylib          0x3c0325d0 kevent64 + 24
1   libdispatch.dylib               0x3bf6dd22 _dispatch_mgr_invoke + 806
2   libdispatch.dylib               0x3bf69374 _dispatch_mgr_thread + 32

Thread 3:
0   libsystem_kernel.dylib          0x3c042d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3bf90ad6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3bf907f2 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3bf90680 start_wqthread + 4

Thread 4 name:  WebThread
Thread 4:
0   libsystem_kernel.dylib          0x3c031e30 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3c031fd0 mach_msg + 48
2   CoreFoundation                  0x33c932b6 __CFRunLoopServiceMachPort + 126
3   CoreFoundation                  0x33c9202c __CFRunLoopRun + 900
4   CoreFoundation                  0x33c05238 CFRunLoopRunSpecific + 352
5   CoreFoundation                  0x33c050c4 CFRunLoopRunInMode + 100
6   WebCore                         0x39be0390 _ZL12RunWebThreadPv + 440
7   libsystem_c.dylib               0x3bf9b0de _pthread_start + 306
8   libsystem_c.dylib               0x3bf9afa4 thread_start + 4

Thread 5:
0   libsystem_kernel.dylib          0x3c042d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3bf90ad6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3bf907f2 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3bf90680 start_wqthread + 4

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x3db31524
    r4: 0x00000006    r5: 0x3db31b78      r6: 0x210aa354      r7: 0x2fd459d4
    r8: 0x210aa330    r9: 0x00000300     r10: 0x00000000     r11: 0x7ff80000
    ip: 0x00000148    sp: 0x2fd459c8      lr: 0x3bfb8fb7      pc: 0x3c042350
  cpsr: 0x00000010

Solution

  • It's not clear why you are asking the map for the region that fits, when you end up setting the span for that region again explicitly anyway. Further, the map doesn't have a meaningful answer to this question before layout is completed. This is probably why it is crashing, because the region is not correctly defined.

    From your code, it looks like you just wanted to do this:

    - (void)viewDidLoad{
       [super viewDidLoad];
    
       CLLocationCoordinate2D startCoord = CLLocationCoordinate2DMake(51.514302, 7.616798);
       [_map setRegion:MKCoordinateRegionMakeWithDistance(startCoord, 200.0, 200.0) animated:NO];
    }
    

    I think that's much simpler, and should work fine on the device.