Cordova iOS 3.6.3+ 问题 - [__NSArrayI 长度]:无法识别的选择器
Posted
技术标签:
【中文标题】Cordova iOS 3.6.3+ 问题 - [__NSArrayI 长度]:无法识别的选择器【英文标题】:Cordova iOS 3.6.3+ Issue - [__NSArrayI length]: unrecognized selector 【发布时间】:2014-12-04 11:08:15 【问题描述】:我在 Xcode 控制台中收到以下错误:
-[__NSArrayI length]: unrecognized selector sent to instance 0x174236680
*** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <NSInvalidArgumentException> -[__NSArrayI length]: unrecognized selector sent to instance 0x174236680
这会导致 webView 停止响应任何触摸事件,尽管应用程序仍然正常工作。例如,我可以成功地从 Safari Web 检查器控制台调用一个函数。 有什么想法吗?
【问题讨论】:
你知道是什么原因造成的吗? 不知道,它发生在屏幕更改时,触发了几个 ajax 调用,并且 navigator.notification.confirm() 将在其中一个回调中触发,但没有警报弹出。但我什至可以从网络检查器控制台成功调用它。 什么部分?它太大了,不能在这里全部发布。它与以前的科尔多瓦版本配合得很好。我想这是科尔多瓦的问题,而不是我的 javascript。 Web 检查器中没有错误。 android在启动时完全崩溃。 BB10 工作正常,只是没有弹出警报。即使我从控制台调用它。 【参考方案1】:好的,我找到了问题。我的错。
navigator.notification.confirm() 的参数计数错误。
给cordova开发者的小提示:使用JSON对象作为函数的参数,那么就不需要null等参数了(因为多个参数的顺序和位置正确)。
【讨论】:
【参考方案2】:我在 iPhone 的应用程序中遇到了同样的错误。我正在将一个应用程序从 BlackBerry 10 移植到 ios。顺便说一下,我们更新了 cordova 版本。
cordova 4.0.0 中的 cordova API 在 iOS 上发生了变化或不同。
在 BB10 应用程序中,此代码有效:
navigator.notification.alert("Test", function() , ["Info"]);
在 iOS 上必须删除数组:
navigator.notification.alert("Test", function() , "Info");
【讨论】:
以上是关于Cordova iOS 3.6.3+ 问题 - [__NSArrayI 长度]:无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章
无法执行dex:多个dex文件定义了Lorg/apache/cordova/App$1