简体   繁体   English

MKMapView因setRegion而崩溃

[英]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? 在模拟器上它工作正常但在我的iPad上它崩溃了...我的错在哪里?

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

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. 我认为这更简单,并且应该在设备上正常工作。 Hope that helps. 希望有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM