【问题标题】:iPhone: MKMapView Strange crashiPhone:MKMapView 奇怪的崩溃
【发布时间】:2009-11-21 18:07:11
【问题描述】:

我遇到了MKMapView 的问题,希望有人可以帮助我。

我有一个嵌入MKMapView 和navigationController 的视图。我将我的 navigationController 推入另一个 viewController,然后再推另一个。然后,如果我回到MKMapView 并触摸地图,应用程序就会崩溃。 所以 MkmapView > View2 > View3 > View2 > MKMapView > touch on the map 然后崩溃。

我绝对不明白为什么。 如果我只推送另一个视图然后回来,它工作得很好。所以: MkmapView > View2 > MKMapView = OK

我在应用程序的另一部分以相同的方式使用其他视图,没有任何问题。 View1 > View2 > View3 > View2 > View1 = OK

我查过了,没有内存警告viewDidUnload或者dealloc方法被调用。

The error is: *** -[NSURL length]: unrecognized selector sent to instance 0x4806930

这次是一个 NSURL 崩溃了,但几乎每次都不同:NSArray、NSDictionnary 等...

这是堆栈跟踪:

0    0x3266bdf4 in objc_exception_throw

1    0x32de2bfc in -[NSObject doesNotRecognizeSelector:]

2    0x32d67b18 in ___forwarding___

3    0x32d5e840 in __forwarding_prep_0___

4    0x32cec074 in -[MKOverlayView _annotationViewForSelectionAtPoint:avoidCurrent:]

5    0x32ce4b60 in -[MKOverlayView annotationViewForPoint:]

6    0x32cc7efc in -[MKMapView _firstTouchBegan:withEvent:]

7    0x32d17e28 in -[MKScrollView _firstTouchBegan:withEvent:]

8    0x32d17c98 in -[MKScrollView touchesBegan:withEvent:]

9    0x30c4a888 in -[UIWindow _sendTouchesForEvent:]

10    0x30c49f94 in -[UIWindow sendEvent:]

11    0x30c45790 in -[UIApplication sendEvent:]

12    0x30c45094 in _UIApplicationHandleEvent

13    0x31bba990 in PurpleEventCallback

14    0x32da452a in CFRunLoopRunSpecific

15    0x32da3c1e in CFRunLoopRunInMode

16    0x31bb9374 in GSEventRunModal

17    0x30bf3c30 in -[UIApplication _run]

18    0x30bf2230 in UIApplicationMain

19    0x000025f8 in main at main.m:14

有人遇到过同样的问题吗?有人可以就如何找到错误或我应该检查什么给我建议吗?

感谢您的宝贵时间!

【问题讨论】:

    标签: iphone objective-c crash uinavigationcontroller mkmapview


    【解决方案1】:

    您的地图视图有注释。如果您在注释的 -title 方法中设置断点,您将在触摸地图时获得相同的堆栈跟踪。

    您的注释将提前发布。

    【讨论】:

      【解决方案2】:

      确保在你在 dealloc 方法中释放 MKMapView 对象之前使用 MKMapView.delegate=nil。这对于 iOS 3.0 很重要,在更高版本中不是必需的。

      【讨论】:

      • 我发现这在 iOS 4.2 中是必需的。
      • 你救了我,伙计...在 iOS 5.0 中调试了 2 天后,工作就像一个魅力 :)
      • 请考虑接受这个作为正确答案:)
      【解决方案3】:

      尝试开启僵尸。这里可能发生的是一个 NSURL 对象正在被释放,而其他东西正在同一地址创建。

      【讨论】:

        猜你喜欢
        • 2013-11-16
        • 2019-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-01
        • 2023-02-02
        • 2016-10-27
        • 2018-03-06
        相关资源
        最近更新 更多