【问题标题】:error phonegap xcode错误phonegap xcode
【发布时间】:2013-03-25 15:52:52
【问题描述】:

我在 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 行

谢谢

【问题讨论】:

  • 有人找到解决这个问题的方法吗?我目前正在努力解决这个问题......
  • 嗨,在我的情况下,这是由于错误的 json 提要
  • 嗨蚂蚁,你能解释一下吗?在我的情况下,当我尝试将 JSON 保存到文件系统时,它会引发异常。

标签: ios xcode cordova


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。但我改变了我的dordova.js
【解决方案2】:

您的应用程序正在使用自动引用计数(这是新的),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; }

【讨论】:

  • 谢谢,我将 CLANG_ENABLE_OBJC_ARC 设置为 no,我也尝试删除 @autoreleasepool 但在每种情况下我都有同样的问题
【解决方案3】:

对我来说,我在插件的 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];

【讨论】:

    猜你喜欢
    • 2014-10-21
    • 2015-07-06
    • 2013-03-26
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多