1

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

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

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

我在应用程序的另一部分以相同的方式使用其他视图,没有任何问题。视图 1 > 视图 2 > 视图 3 > 视图 2 > 视图 1 = 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

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

谢谢你的时间!

4

3 回答 3

1

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

您的注释会提前发布。

于 2009-11-22T01:12:15.827 回答
1

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

于 2010-09-22T16:43:17.370 回答
0

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

于 2009-11-21T19:57:55.690 回答