错误phonegap xcode

时间:2013-04-03 19:40:37

标签: ios xcode cordova

我在android上有一个phonegap项目。 这很好,但是当我在phonegap网站上编译时,我在ios版本上遇到了一些问题。

所以我尝试使用xcode模拟器使用xcode,但我有以下错误:

2013-04-03 21:29:27.261 Assas[2339:c07] Multi-tasking -> Device: YES, App: YES
2013-04-03 21:29:28.455 Assas[2339:c07] [LOG] true
2013-04-03 21:29:28.940 Assas[2339:c07] -[__NSCFArray    dataUsingEncoding:allowLossyConversion:]: unrecognized selector sent to instance 0x8939150
2013-04-03 21:29:28.942 Assas[2339:c07] *** Terminating app due to uncaught exception     'NSInvalidArgumentException', reason: '-[__NSCFArray dataUsingEncoding:allowLossyConversion:]:     unrecognized selector sent to instance 0x8939150'
*** First throw call stack:
(0x14c012 0x25a2e7e 0x1d74bd 0x13bbbc 0x13b94e 0x163b0 0x16243 0x5bbdb 0x5b32c 0x5aedd     0x5b075 0x5af93 0x25b66b0 0x1125765 0xcff3f 0xcf96f 0xf2734 0xf1f44 0xf1e1b 0x33d37e3     0x33d3668 0x387ffc 0x214c 0x20a5)
libc++abi.dylib: terminate called throwing an exception

我在我的android项目中获取了我的www文件夹的内容,我只是更改了config.xml和cordova jsfile

我在两个项目中都使用了phonegap 2.4.0

编辑:

错误在Others Sources / main.m

#import <UIKit/UIKit.h>

int main(int argc, char* argv[])
{
    @autoreleasepool {
        int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
        return retVal;
    }
}
第6行

由于

3 个答案:

答案 0 :(得分:0)

对于Android和ios,cordova javascript是不同的。因此,当您复制www时,请确保使用ios的cordova.js替换android的cordova.js。

答案 1 :(得分:0)

您的应用程序正在使用自动引用计数(这是新的),而Phonegap尚不支持它。解决方案如下:

1。 转到项目的构建设置,并将“自动引用计数”设置为“关闭”。 构建设置 - 用户定义-CLANG_ENABLE_OBJC_ARC-从YES更改为NO

2。 危险/坏但解决错误:删除@autoreleasepool,代码似乎是 int main(int argc, char* argv[]) { int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); return retVal; }

答案 2 :(得分:0)

对我来说,我在插件的javascript文件中重新排列了插件参数的顺序,但我没有在iOS代码中反映这些更改。我在插件参数中发送了字符串,长整数和整数的混合:

// Old javascript
cordova.exec(success, fail, "MyPlugin", "PluginMethod", [0, 758493037474, "String"]);

// New javascript
cordova.exec(success, fail, "MyPlugin", "PluginMethod", ["String", 0, 758493037474]);

确保更新你的后端代码(没有,对吧!!!)

// Old objective C
int myid              = [command.arguments objectAtIndex:0];
double mydouble       = [[command.arguments objectAtIndex:1] doubleValue];
NSString *mystring    = [command.arguments objectAtIndex:2];

// New objective C
NSString *mystring    = [command.arguments objectAtIndex:0];
int myid              = [command.arguments objectAtIndex:1];
double mydouble       = [[command.arguments objectAtIndex:2] doubleValue];