菜鸟教程小白 发表于 2022-12-12 14:28:16

ios - 无法识别的选择器 isPitched 被调用


                                            <p><p>在我的应用程序中,我正在显示带有注释的 map ,用户可以在表格 View 中浏览注释列表(在模态视图 Controller 中)。</p>

<p>我遇到了一个奇怪的错误,我可以在设备和模拟器(iOS 7 和 8)中重现该错误。</p>

<p>在倾斜模式下,如果我尝试在我的 POITableView 中选择一个项目,它会执行以下操作之一:</p>

<ul>
<li>将 map 中心更改为 map 上的随机点,而不是选定的注释。</li>
<li>在我放置的消息下崩溃(已启用 NSZombies)。</li>
</ul>

<blockquote>
<p>-: unrecognized selector sent to instance 0x7f24e6e0</p>
</blockquote>

<p>我尝试了几种方法来解决这个错误,但都没有成功。令我困惑的是,我找不到有关 isPitched 方法的任何信息。它不在我的代码中,也不在 Apple 文档中。</p>

<p>有人知道更多关于 MapKit 和这些类型的问题吗?
或者,您是否知道当用户在列表中选择 POI 时停用音调的方法?也许它会阻止这个错误。</p>

<p> <img src="/image/j7F3a.png" alt="screenshot"/> </p>

<p><strong>编辑:</strong>刚刚发现'isPitched'方法实际上是<a href="https://github.com/nst/iOS-Runtime-Headers/blob/master/PrivateFrameworks/VectorKit.framework/VKMapCameraController.h" rel="noreferrer noopener nofollow">VectorKit</a>的一部分!不过,并没有真正的帮助。没有关于 VectorKit 的文档...</p>

<p><strong>编辑 2:</strong> 添加了堆栈跟踪。</p>

<pre>-:无法识别的选择器发送到实例 0x7db84870
2015-02-28 14:25:08.501 Cartel 2015 *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-:无法识别的选择器发送到实例 0x7db84870”
*** 首先抛出调用堆栈:
(
    0 CoreFoundation 0x00afb946 __exceptionPreprocess + 182
    1 libobjc.A.dylib 0x00784a97 objc_exception_throw + 44
    2核心基础0x00b035c5-+277
    3 核心基础 0x00a4c3e7 ___转发___ + 1047
    4 核心基础 0x00a4bfae _CF_forwarding_prep_0 + 14
    5 VectorKit 0x02dd09c1 __86-_block_invoke + 1809
    6 VectorKit 0x02d88645 - + 357
    7 VectorKit 0x02d9895e - + 686
    8 VectorKit 0x02d9850e - + 46
    9 VectorKit 0x02d71e69 - + 89
    10 libobjc.A.dylib 0x0079a771- + 70
    11 VectorKit 0x0323463c- + 60
    12quartz 核心 0x041abcad _ZN2CA7Display15DisplayLinkItem8dispatchEv + 45
    13quartz 核心 0x041abb83 _ZN2CA7Display11DisplayLink14dispatch_itemsEyyy + 311
    14quartz 核心 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
</pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>好的,我设法通过以下修复来防止崩溃。</p>

<p>当在我的列表中选择一个 POI 时,我会触发 ViewController 的委托(delegate)方法,该方法从 tableViewController 的 didSelect 方法处理 MapView。如果你有同样的问题,我想你到目前为止已经明白我的意思了。</p>

<p>在这个方法中,我要求 MapView 以 POI 的坐标为中心。</p>

<p>现在,为了解决仅在用户跟踪模式设置为“俯仰”(跟随您的方向)时发生的问题,我只是在方法的开头添加了一行来停用此跟踪模式:</p>

<pre><code> ;
</code></pre>

<p>这消除了随机出现的崩溃。请注意,它不会导致违反直觉的行为,因为当用户移动 map 时,此跟踪模式会自动停用。</p>

<p>所以问题为我解决了,但是如果您有任何关于这个 isPitched 选择器的信息以及真正导致问题的原因,非常欢迎您在这里发布!</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无法识别的选择器 isPitched 被调用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28782161/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28782161/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无法识别的选择器 isPitched 被调用