0

好的,所以在 Cordova 2.1 CDVInvokedUrlCommand.m 中有一个函数 -(void)legacyArguments 对 URL 有一定的用途。我的问题是,当变量 _arguments 设置为 nil 时,Cordova 中的代码会调用 legacyArguments,并使应用程序崩溃。尝试检查 _arguments == nil 是否总是返回 false(无论是 nil 还是有值),并且 [_arguments count] 也会使应用程序崩溃。

使应用程序崩溃的行是...

NSMutableArray* newArguments = [NSMutableArray arrayWithArray:_arguments];

现在要修复它,我只需要检查以确保 _arguments 不为零,但我找不到可靠的方法。也许有一种“安全”的方式来进行上述调用,或者有另一种方式来检查 _arguments,如果它为 nil 就不会导致应用程序崩溃?

编辑:因为它被要求......

-[__NSCFConstantString count]: unrecognized selector sent to instance 0x8ee98
2012-09-20 11:04:59.825 EESEmployee[50307:15b03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString count]: unrecognized selector sent to instance 0x8ee98'
*** First throw call stack:
(0xf4c012 0x262de7e 0xfd74bd 0xf3bbbc 0xf3b94e 0x1ad30 0x66dcd 0x665fe 0x669d9 0x26416b0 0x13e0035 0xecff3f 0xecf96f 0xef2734 0xef1f44 0xef1e1b 0x314a7e3 0x314a668 0xd165c 0x2ce6 0x2c15)
libc++abi.dylib: terminate called throwing an exception
4

2 回答 2

0

遇到此错误的任何其他人,在 CDVInvokedUrlCommand 中添加检查将允许您继续调试,但要“修复”问题,您需要按照此处的说明将 Cordova/Phonegap 项目的插件升级到 2.1

就我个人而言,如果它收到非法消息,我会留下检查并让它显示一条消息(而不是在不提供任何信息的情况下关闭整个应用程序)。

于 2012-09-20T19:13:14.943 回答
0

新命令与旧命令的用途是什么?我从...改变

-(void)getToken:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options

对这个……

-(void)getToken:(CDVinvokedUrlCommand*)command

然后设置一个回调ID

self.callbackID = [arguments pop];

由于我现在不使用参数,callbackID 在哪里?

于 2012-09-28T17:39:36.357 回答