【问题标题】:iPhone: App crash in MapView after 20 miniPhone:20 分钟后 MapView 中的应用程序崩溃
【发布时间】:2010-08-03 01:18:39
【问题描述】:

我正在开发一个跟踪用户位置的应用程序。大约 20 分钟后,应用程序似乎总是崩溃,我不知道为什么。设备日志显示:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x069f6000
Crashed Thread:  0

Thread 0 Crashed:
0   Ride                            0x00012e00 -[Route addCoordinate:] (Route.m:92)
1   Ride                            0x0000877a -[MyRidesMapViewController locationManager:didUpdateToLocation:fromLocation:] (MyRidesMapViewController.m:528)
2   CoreLocation                    0x0000931c -[CLLocationManager onClientEventLocation:] + 584
3   CoreLocation                    0x00007552 -[CLLocationManager onClientEvent:supportInfo:] + 98
4   CoreLocation                    0x000076a0 OnClientEvent + 16
5   CoreLocation                    0x00002ade CLClientInvokeCallback(__CLClient*, CLClientEvent, __CFDictionary const*) + 42
6   CoreLocation                    0x0000512c CLClientHandleDaemonDataLocation(__CLClient*, CLClientLocation const*, __CFDictionary const*) + 204
7   CoreLocation                    0x0000528a CLClientHandleDaemonData(__CFMessagePort*, long, __CFData const*, void*) + 298
8   CoreFoundation                  0x0006936a __CFMessagePortPerform + 242
9   CoreFoundation                  0x00071aa4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
10  CoreFoundation                  0x00073848 __CFRunLoopDoSource1 + 160
11  CoreFoundation                  0x00074626 __CFRunLoopRun + 514
12  CoreFoundation                  0x0001d8e4 CFRunLoopRunSpecific + 224
13  CoreFoundation                  0x0001d7ec CFRunLoopRunInMode + 52
14  GraphicsServices                0x000036e8 GSEventRunModal + 108
15  GraphicsServices                0x00003794 GSEventRun + 56
16  UIKit                           0x000062a0 -[UIApplication _run] + 396
17  UIKit                           0x00004e10 UIApplicationMain + 664
18  Ride                            0x00002a20 main (main.m:14)
19  Ride                            0x000029d4 start + 32

看起来我正在尝试发布一些已经发布的东西,但是什么?!我启用了 NSZombie,但它似乎没有帮助。

它曾经可以工作,我最近更新了我的课程以使用 self.对于我合成的任何东西,这可能是问题吗?

编辑:我更新了错误。它似乎列出了每一行的行号,但它们似乎没有帮助找到问题。

【问题讨论】:

    标签: iphone crash geolocation mkmapview exc-bad-access


    【解决方案1】:

    您在设备上运行时是否启用了 NSZombie?如果是这样,您可能内存不足。如您所知,NSZombie 将释放的对象保留在周围,因此您可以检测到双重释放。

    不过,您可能确实存在一些内存问题。静态分析器会显示什么吗? (shift-command-A)。

    【讨论】:

    • 你知道吗,我知道!废话,让我把它关掉,让我的问题消失。是的,使用静态分析器确实显示了一些我将要解决的问题......
    • OK... 如果解决方案不明显,请发布分析器抱怨的代码示例。
    • 好的,删除 NSZombie 没有帮助。我用更新的错误更新了上面的帖子。似乎仍然与位置有关,并且可能在地图上绘制我的路线。
    • 看起来分析器发现了我没有发布的东西,将再次尝试应用程序,看看这是否解决了问题...
    • 您在崩溃前调用了一个位置管理器委托函数。您是否可能在不使 CLLocationManager 的委托为零的情况下释放该委托?当事情处于糟糕状态时,您是否会意外地调用该方法?如果 CLLocationManager 未能及时响应,并且它在不活动时失效,您是否有一个单独的计时器可能能够显示一个对话框?
    【解决方案2】:

    将位置管理器委托设置为 nil 然后释放它为我修复了崩溃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      相关资源
      最近更新 更多