【问题标题】:Reflection not working in ios in codename one反射在代号一的 ios 中不起作用
【发布时间】:2017-01-13 14:31:40
【问题描述】:

我在我的应用程序中使用下面的代码,它在 android 中运行良好,甚至在 iphone 模拟器上也可以,但在真正的 iPhone 设备上无法运行。如果有人能帮助我,我将不胜感激。

Class clazz = Class.forName("com.logic.form.ClassName");
Screen screen = (Screen) clazz.newInstance();
screen.show(parameter);

【问题讨论】:

  • Cn1 不支持反射
  • 确实如此。但是 Class.forName() 和 Class.newInstance() 应该仍然可以工作。
  • 如果您可以访问您的设备日志(例如通过 USB 将其连接到 Mac),它将显示堆栈跟踪,告诉您问题所在。

标签: codenameone


【解决方案1】:

你不应该那样做。虽然它“可能”起作用,但它可能会出现严重的问题,例如在 Android 上我们会混淆类名,而在 iOS 上,如果一个类未被使用就会被剥离。

没有正当理由在代号一中使用Class.forName(),因为移动设备不允许动态类下载或类路径魔法。您可以使用类文字来获取动态代码,这些将适用于所有操作系统,例如:

Class clazz = com.logic.form.ClassName.class;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2015-03-27
    相关资源
    最近更新 更多