-2

我现在有点没有想法。到目前为止,我已经向 AppStore 提交了 5 或 6 次 iPhone 应用程序,但除了一次之外,它总是被拒绝。我仍然想知道为什么它曾经被接受,因为我几乎没有改变以前的版本(被拒绝)。

顺便说一句:我在不同的 iPhone 5 上测试了这个应用程序,它从来没有崩溃过......

无论如何,我在理解崩溃报告时遇到问题:

Last Exception Backtrace:
0   CoreFoundation                  0x320483e2 0x31f86000 + 795618
1   libobjc.A.dylib                 0x39d4395e ParkingDeckDetailViewController.m:137
2   CoreFoundation                  0x32048302 0x31f86000 + 795394
3   QuartzCore                      0x33c05106 StartupViewController.m:906
4   QuartzCore                      0x33c0502e StartupViewController.m:904
5   UIKit                           0x33ebb944 0x33e54000 + 424260
6   Passau                          0x00196c88 -[AGSGPS setupFrameAndBounds:] (AGSGPS.m:678)
7   Passau                          0x00198056 -[AGSGPS consumeNewLocation:] (AGSGPS.m:928)
8   Passau                          0x00198ffa -[AGSGPS didApproximateProjectionWithGeometry:] (AGSGPS.m:1085)
9   Passau                          0x00197f16 -[AGSGPS locationManager:didUpdateToLocation:fromLocation:] (AGSGPS.m:920)
10  CoreLocation                    0x324f00d6 CityTourDetailViewController.m:234
11  CoreLocation                    0x324e7f38 TabBarViewController.m:90
12  CoreFoundation                  0x3201d920 0x31f86000 + 620832
13  CoreFoundation                  0x3201cff4 0x31f86000 + 618484
14  CoreFoundation                  0x3201c24e 0x31f86000 + 614990
15  CoreFoundation                  0x31f8f238 MapLayerCell.m:50
16  CoreFoundation                  0x31f8f0c4 JSONDataDownload.m:138
17  GraphicsServices                0x35b6e336 MapViewController.m:265
18  UIKit                           0x33eab2b4 0x33e54000 + 357044
19  Passau                          0x000e73aa main (main.m:16)
20  libdyld.dylib                   0x3a170b1c StartupViewController.m:779

和崩溃的线程:

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3a237350 __pthread_kill + 8
1   libsystem_c.dylib               0x3a1adfb2 pthread_kill + 54
2   libsystem_c.dylib               0x3a1ea366 abort + 90
3   libc++abi.dylib                 0x39792dda abort_message + 70
4   libc++abi.dylib                 0x39790094 default_terminate() + 20
5   libobjc.A.dylib                 0x39d43a58 _objc_terminate() + 144
6   libc++abi.dylib                 0x39790118 safe_handler_caller(void (*)()) + 76
7   libc++abi.dylib                 0x397901b0 std::terminate() + 16
8   libc++abi.dylib                 0x39791626 __cxa_rethrow + 90
9   libobjc.A.dylib                 0x39d439b0 objc_exception_rethrow + 8
10  CoreFoundation                  0x31f8f29c CFRunLoopRunSpecific + 452
11  CoreFoundation                  0x31f8f0c4 CFRunLoopRunInMode + 100
12  GraphicsServices                0x35b6e336 GSEventRunModal + 70
13  UIKit                           0x33eab2b4 UIApplicationMain + 1116
14  Passau                          0x000fc3aa main (main.m:16)
15  libdyld.dylib                   0x3a170b1c start + 0

我正在使用 ArcGIS 框架来显示地图。

那么,您能否给我一个提示,我应该在哪里锁定错误?当我阅读崩溃的线程报告时,在我看来应用程序在启动后立即崩溃了,对吗?

谢谢!

编辑:用大多数符号化的版本替换了“最后一个异常回溯”。

+

Thread 3 name:  Dispatch queue: com.apple.CoreLocation.ConnectionClient.0x2007a300.events
Thread 3:
0   libsystem_kernel.dylib          0x3a226e98 semaphore_timedwait_trap + 8
1   libdispatch.dylib               0x3a161c16 _dispatch_semaphore_wait_slow + 118
2   CoreLocation                    0x324e7ea4 CLClientInvokeCallback(__CLClient*, CLClientEvent, objc_object*) + 340
3   CoreLocation                    0x324eb4e2 ___CLClientCreateConnection_block_invoke_0 + 346
4   CoreLocation                    0x32521f20 __setEventHandler_block_invoke_0 + 344
5   libxpc.dylib                    0x3a27c882 _xpc_connection_mach_event + 718
6   libdispatch.dylib               0x3a163688 _dispatch_mach_msg_invoke + 120
7   libdispatch.dylib               0x3a160afa _dispatch_queue_drain + 78
8   libdispatch.dylib               0x3a16392e _dispatch_mach_invoke + 166
9   libdispatch.dylib               0x3a160afa _dispatch_queue_drain + 78
10  libdispatch.dylib               0x3a15e678 _dispatch_queue_invoke + 40
11  libdispatch.dylib               0x3a160afa _dispatch_queue_drain + 78
12  libdispatch.dylib               0x3a15e678 _dispatch_queue_invoke + 40
13  libdispatch.dylib               0x3a161610 _dispatch_root_queue_drain + 208
14  libdispatch.dylib               0x3a1617d4 _dispatch_worker_thread2 + 88
15  libsystem_c.dylib               0x3a1857ee _pthread_wqthread + 358
16  libsystem_c.dylib               0x3a185680 start_wqthread + 4
4

1 回答 1

2

您的“最后一个异常堆栈跟踪”来自线程 3,它不是主线程。但是,它被扔进了 aUIViewController的方法中。这意味着您正在从除主线程之外的另一个线程操作您的界面,这是不正确的,并且会导致许多不同严重程度的问题。

所以你需要确保消息只发送到主线程上的视图控制器。由于CLLocationManagerDelegate回调发生在启动管理器的线程上,您应该执行以下操作之一:

  • CLLocationManager仅在主线程上启动您的 s。

  • 在处理位置更新的代码中,无论是在堆栈内部locationManager:didUpdateToLocation:fromLocation:还是在堆栈下方的某个位置,您都应该对主队列执行 dispatch_async,并传递一个块,该块将所有消息传递给视图控制器。

于 2013-03-21T23:24:30.793 回答