CDVInvokedUrlCommand崩溃应用程序中的NSMutableArray

时间:2012-09-20 16:00:55

标签: objective-c cordova

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

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

NSMutableArray* newArguments = [NSMutableArray arrayWithArray:_arguments];

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

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

-[__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

2 个答案:

答案 0 :(得分:0)

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

就我个人而言,如果收到非法消息(而不是仅提供关闭整个应用程序而不提供任何信息),我将暂停检查并显示消息。

答案 1 :(得分:0)

新命令与旧命令的用法是什么?我正在改变......

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

到此......

-(void)getToken:(CDVinvokedUrlCommand*)command

然后设置回拨ID

self.callbackID = [arguments pop];

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