好吧,所以在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
答案 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在哪里?