-2

私は今、少しアイデアがありません。私はこの日までにiPhoneアプリをAppStoreに5〜6回提出しましたが、1回を除いて常に拒否されました。以前のバージョン(拒否された)からほとんど変更しなかったので、なぜ一度受け入れられたのか疑問に思っています。

ところで:私は別の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からのものです。ただし、UIViewController'sメソッド内にスローされました。これは、メインスレッド以外の別のスレッドからインターフェイスを操作していることを意味します。これは正しくなく、さまざまな重大度の多くの問題を引き起こします。

したがって、メッセージがメインスレッドのビューコントローラにのみ送信されるようにする必要があります。CLLocationManagerDelegateコールバックはマネージャーが開始されたスレッドで発生するため、次のいずれかを実行する必要があります。

  • CLLocationManagerメインスレッドでのみsを開始します。

  • スタック内locationManager:didUpdateToLocation:fromLocation:またはスタックのさらに下の場所で更新を処理するコードでは、メインキューに対してdispatch_asyncを実行して、ビューコントローラーへのすべてのメッセージングを行うブロックを渡す必要があります。

于 2013-03-21T23:24:30.793 に答える