无法识别的选择器 isPitched called
unrecognized selector isPitched called
在我的应用程序中,我正在显示带有注释的地图,用户可以在 table 视图(在模态视图控制器中)中浏览注释列表。
我遇到了一个奇怪的错误,我可以在设备和模拟器中重现该错误(iOS 7 和 8)。
在倾斜模式下,如果我尝试 select 我的 POI table 视图中的某个项目,它会执行以下操作之一:
- 将地图中心更改为地图上的随机点,而不是 selected 注释。
- 因我放入的消息(启用 NSZombies)而崩溃。
-[__NSCFString isPitched]: unrecognized selector sent to instance 0x7f24e6e0
我尝试了几种方法来解决这个错误,但都没有成功。令我困惑的是我找不到任何关于 isPitched 方法的信息。它不在我的代码中,也不在 Apple 文档中。
是否有人对 MapKit 和这些类型的问题了解更多?
或者,当用户 select 列表中的 POI 时,您是否知道一种停用推介的方法?也许它可以防止错误。
编辑: 刚刚发现 'isPitched' 方法实际上是 VectorKit 的一部分!不过,并没有真正的帮助。没有关于 VectorKit 的文档...
编辑 2: 添加了堆栈跟踪。
-[__NSCFString isPitched]: 无法识别 select 或发送到实例 0x7db84870
2015-02-28 14:25:08.501 Cartel 2015[2481:178443] *** 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[__NSCFString isPitched]:无法识别 select或发送到实例 0x7db84870'
*** 首先抛出调用栈:
(
0 核心基础 0x00afb946 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x00784a97 objc_exception_throw + 44
2 CoreFoundation 0x00b035c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
3 核心基础 0x00a4c3e7 ___forwarding___ + 1047
4 核心基础 0x00a4bfae _CF_forwarding_prep_0 + 14
5 VectorKit 0x02dd09c1 __86-[VKMapCameraController_animateToPosition:pitch:yaw:duration:timingCurve:completion:]_block_invoke+1809
6 VectorKit 0x02d88645 -[VKAnimation onTimerFired:] + 357
7 VectorKit 0x02d9895e -[VKScreenCanvas animateWithTimestamp:] + 686
8 VectorKit 0x02d9850e -[VKScreenCanvas 更新时间戳:] + 46
9 VectorKit 0x02d71e69 -[VKMapView onTimerFired:] + 89
10 libobjc.A.dylib 0x0079a771 -[NSObject performSelector:withObject:] + 70
11 VectorKit 0x0323463c-[GGLDisplayLink _displayLinkFired:]+60
12 石英核心 0x041abcad _ZN2CA7Display15DisplayLinkItem8dispatchEv + 45
13 石英核心 0x041abb83 _ZN2CA7Display11DisplayLink14dispatch_itemsEyyy + 311
14 石英核 0x041ac067 _ZN2CA7Display16TimerDisplayLink8callbackEP16__CFRunLoopTimerPv + 123
15 核心基础 0x00a558d6 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22
16 核心基础 0x00a5525d __CFRunLoopDoTimer + 1309
17 核心基础 0x00a146ba __CFRunLoopRun + 2090
18 核心基础 0x00a13bcb CFRunLoopRunSpecific + 443
19 核心基础 0x00a139fb CFRunLoopRunInMode + 123
20 图形服务 0x03f4324f GSEventRunModal + 192
21 图形服务 0x03f4308c GSEventRun + 104
22 UIKit 0x00f318b6 UIApplicationMain + 1526
23 卡特尔 2015 0x0001110d 主要 + 141
24 libdyld.dylib 0x046aaac9 开始 + 1
25 ??? 0x00000001 0x0 + 1
好的,我通过以下修复设法防止了崩溃。
当在我的列表中选择一个 POI 时,我触发了视图控制器的委托方法,该方法从 tableView 的控制器的 didSelect 方法处理 MapView。如果你有同样的问题,我想你到目前为止已经明白我的意思了。
在这个方法中,我要求 MapView 以 POI 的坐标为中心。
现在,为了解决仅当用户跟踪模式设置为 "pitched"(根据您的方向)时才会发生的问题,我只是在我的方法开头添加了一行以停用此跟踪模式:
[mapView setUserTrackingMode: MKUserTrackingModeNone] ;
这消除了随机出现的崩溃。请注意,它不会导致违反直觉的行为,因为当用户移动地图时此跟踪模式会自动停用。
所以我的问题已经解决了,但是如果您有关于这个 isPitched 选择器的任何信息以及真正导致问题的原因,非常欢迎您在这里 post 它!
在我的应用程序中,我正在显示带有注释的地图,用户可以在 table 视图(在模态视图控制器中)中浏览注释列表。
我遇到了一个奇怪的错误,我可以在设备和模拟器中重现该错误(iOS 7 和 8)。
在倾斜模式下,如果我尝试 select 我的 POI table 视图中的某个项目,它会执行以下操作之一:
- 将地图中心更改为地图上的随机点,而不是 selected 注释。
- 因我放入的消息(启用 NSZombies)而崩溃。
-[__NSCFString isPitched]: unrecognized selector sent to instance 0x7f24e6e0
我尝试了几种方法来解决这个错误,但都没有成功。令我困惑的是我找不到任何关于 isPitched 方法的信息。它不在我的代码中,也不在 Apple 文档中。
是否有人对 MapKit 和这些类型的问题了解更多? 或者,当用户 select 列表中的 POI 时,您是否知道一种停用推介的方法?也许它可以防止错误。
编辑: 刚刚发现 'isPitched' 方法实际上是 VectorKit 的一部分!不过,并没有真正的帮助。没有关于 VectorKit 的文档...
编辑 2: 添加了堆栈跟踪。
-[__NSCFString isPitched]: 无法识别 select 或发送到实例 0x7db84870 2015-02-28 14:25:08.501 Cartel 2015[2481:178443] *** 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[__NSCFString isPitched]:无法识别 select或发送到实例 0x7db84870' *** 首先抛出调用栈: ( 0 核心基础 0x00afb946 __exceptionPreprocess + 182 1 libobjc.A.dylib 0x00784a97 objc_exception_throw + 44 2 CoreFoundation 0x00b035c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277 3 核心基础 0x00a4c3e7 ___forwarding___ + 1047 4 核心基础 0x00a4bfae _CF_forwarding_prep_0 + 14 5 VectorKit 0x02dd09c1 __86-[VKMapCameraController_animateToPosition:pitch:yaw:duration:timingCurve:completion:]_block_invoke+1809 6 VectorKit 0x02d88645 -[VKAnimation onTimerFired:] + 357 7 VectorKit 0x02d9895e -[VKScreenCanvas animateWithTimestamp:] + 686 8 VectorKit 0x02d9850e -[VKScreenCanvas 更新时间戳:] + 46 9 VectorKit 0x02d71e69 -[VKMapView onTimerFired:] + 89 10 libobjc.A.dylib 0x0079a771 -[NSObject performSelector:withObject:] + 70 11 VectorKit 0x0323463c-[GGLDisplayLink _displayLinkFired:]+60 12 石英核心 0x041abcad _ZN2CA7Display15DisplayLinkItem8dispatchEv + 45 13 石英核心 0x041abb83 _ZN2CA7Display11DisplayLink14dispatch_itemsEyyy + 311 14 石英核 0x041ac067 _ZN2CA7Display16TimerDisplayLink8callbackEP16__CFRunLoopTimerPv + 123 15 核心基础 0x00a558d6 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22 16 核心基础 0x00a5525d __CFRunLoopDoTimer + 1309 17 核心基础 0x00a146ba __CFRunLoopRun + 2090 18 核心基础 0x00a13bcb CFRunLoopRunSpecific + 443 19 核心基础 0x00a139fb CFRunLoopRunInMode + 123 20 图形服务 0x03f4324f GSEventRunModal + 192 21 图形服务 0x03f4308c GSEventRun + 104 22 UIKit 0x00f318b6 UIApplicationMain + 1526 23 卡特尔 2015 0x0001110d 主要 + 141 24 libdyld.dylib 0x046aaac9 开始 + 1 25 ??? 0x00000001 0x0 + 1
好的,我通过以下修复设法防止了崩溃。
当在我的列表中选择一个 POI 时,我触发了视图控制器的委托方法,该方法从 tableView 的控制器的 didSelect 方法处理 MapView。如果你有同样的问题,我想你到目前为止已经明白我的意思了。
在这个方法中,我要求 MapView 以 POI 的坐标为中心。
现在,为了解决仅当用户跟踪模式设置为 "pitched"(根据您的方向)时才会发生的问题,我只是在我的方法开头添加了一行以停用此跟踪模式:
[mapView setUserTrackingMode: MKUserTrackingModeNone] ;
这消除了随机出现的崩溃。请注意,它不会导致违反直觉的行为,因为当用户移动地图时此跟踪模式会自动停用。
所以我的问题已经解决了,但是如果您有关于这个 isPitched 选择器的任何信息以及真正导致问题的原因,非常欢迎您在这里 post 它!