【发布时间】:2011-07-09 21:46:50
【问题描述】:
我在分析崩溃日志时遇到问题。当我单击应用程序图标启动应用程序时,iPhone 有时会崩溃。该应用程序已在后台“运行”,但未处于活动状态。这是符号化的崩溃日志:
Thread 0 Crashed:
0 libobjc.A.dylib 0x33479470 objc_msgSend + 28
1 CoreLocation 0x3436f68e -[CLLocationManager onClientEvent:supportInfo:] + 98
2 CoreLocation 0x3436f804 OnClientEvent + 16
3 CoreLocation 0x3436b522 CLClientInvokeCallback(__CLClient*, CLClientEvent, __CFDictionary const*) + 42
4 CoreLocation 0x3436cf74 CLClientHandleDaemonDataRegistration(__CLClient*, CLDaemonCommToClientRegistration const*, __CFDictionary const*) + 668
5 CoreLocation 0x3436d4c8 CLClientHandleDaemonData(__CFMessagePort*, long, __CFData const*, void*) + 212
6 CoreFoundation 0x33a813fe __CFMessagePortPerform + 242
7 CoreFoundation 0x33a556f8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
8 CoreFoundation 0x33a556bc __CFRunLoopDoSource1 + 160
9 CoreFoundation 0x33a47f76 __CFRunLoopRun + 514
10 CoreFoundation 0x33a47c80 CFRunLoopRunSpecific + 224
11 CoreFoundation 0x33a47b88 CFRunLoopRunInMode + 52
12 GraphicsServices 0x33b0e4a4 GSEventRunModal + 108
13 GraphicsServices 0x33b0e550 GSEventRun + 56
14 UIKit 0x32099322 -[UIApplication _run] + 406
15 UIKit 0x32096e8c UIApplicationMain + 664
16 Norddeich 0x00002764 main (main.m:14)
17 Norddeich 0x00002718 start + 32
据我了解堆栈跟踪,错误发生在 main.m 中。第 14 行是默认代码的一部分:
int retVal = UIApplicationMain(argc, argv, nil, nil);
请给我一个提示,如何找到错误。
提前谢谢!
【问题讨论】:
-
似乎
CLLocationManager中的某些代码正在崩溃。您是否在应用中使用位置跟踪? -
嗨,奥莱!是的,我使用位置跟踪。我在 AppDelegate 中有一个 CLLocationManager,我从 didFinishLaunchingWithOptions 方法开始。每次使用需要位置的视图控制器时,我都会将视图控制器设置为 CLLocationManager 的委托,以便使用适当的 didUpdateToLocation 方法。这个可以吗?谢谢!
-
进入后台时是否设置delegate为nil?如果不是,则已设置为委托的视图控制器可能已被释放,这将导致崩溃。此外,您需要查看崩溃日志的顶部以了解它发生的位置。如果崩溃发生在线程 0 上,那么您的 main 函数将始终位于回溯的底部。
标签: iphone cocoa-touch ios core-location crash-log