1

我正在尝试使用 Titanium SDK 构建跨平台(Android-ios)移动应用程序。好久没机会为ios搭建了,只用了我的windows-android组合,测试了一下,在安卓系统上效果很好。但是当我尝试在 Mac 上为 ios 构建它时,我收到了这条消息,并且应用程序在一秒钟内关闭:

应用程序因未捕获的异常“NSInvalidArgumentException”而崩溃。

由于我无法提供任何相关代码,因为异常没有显示我的 javascript 代码有什么问题,而且我当然没有编写任何本机的 ios 特定代码,我不知道该怎么办。

从我在这里找到的几篇文章中,我尝试过:

  • 重启钛工作室
  • 清理项目
  • 确保在完成所有ResultSet, 和DB对象后关闭它们(如此处建议: 主题
  • 在 3.0.0 和 2.xx 版本上测试代码

我期待着任何建议,关于你如何解决这个问题,如果你有的话!提前致谢!

更新: 问题如下:我调用hasOwnProperty了 Titanium UI 元素,而在 ios 版本上,这些元素没有这个功能(这很奇怪,因为每个 javascript 对象都有它,如果我没记错的话)。

如果你有类似的问题,我推荐阅读这篇文章,除了 Mr.VVoos 的回答,它对避免我遇到的问题有很大帮助!

4

1 回答 1

1

我用 Titanim 和 iOS 和 Android 开发了很长时间。通常 iOS 和 Android 部分的代码有很多不同之处。

在大多数情况下,此异常意味着调用了对被调用类不可用的操作。(在 Java 中,这意味着:Class.method() -> Class 没有称为 method() 的方法)。

您可以尝试在调试模式下运行应用程序(在 iOS 模拟器上)。与 Android 相比,调试 iOS 有很大的优势。通常,如果出现异常,iOS 模拟器会停止并显示导致异常的 JavaScript 代码。不幸的是,这并不总是有效,它只适用于模拟器。

如果这没有提供任何进一步的信息,您可以执行以下操作: - 转到您的 app.js 并在第一行之一中设置断点。- 在调试模式下启动应用程序。- 每次在此断点上移动,直到您的应用程序崩溃 - 也许您能够检测到错误或提供更多信息。

最后一个提示:检查您的代码是否有任何特定于平台的部分。(比如 Android Intents 和 iOS 上不可用的东西)。

我知道这可能非常难看,但我们必须在从 iOS 迁移到 Android 时解决许多这些令人讨厌的问题。

于 2013-02-18T19:12:14.050 回答