【发布时间】:2015-06-06 22:52:56
【问题描述】:
如果我使用任何 non-null 参数调用以下 RoboVM 方法:
public static void runOnUiThread(final Runnable runnable) {
System.out.println("Inside runOnUiThread():");
System.out.println(" Null-check: "+(runnable==null));
NSOperation operation = new NSOperation() {
@Override
public void main() {
System.out.println("Inside main():");
System.out.println(" Null-check: "+(runnable==null));
runnable.run(); // NullPointerException here?!? How???
System.out.println(" main() completed");
}
};
NSOperationQueue.getMainQueue().addOperation(operation);
}
它输出:
Inside runOnUiThread():
Null-check: false
Inside main():
Null-check: true
java.lang.NullPointerException
at RoboVMTools$1.main(RoboVMTools.java)
at org.robovm.apple.foundation.NSOperation.$cb$main(NSOperation.java)
at org.robovm.apple.uikit.UIApplication.main(Native Method)
at org.robovm.apple.uikit.UIApplication.main(UIApplication.java)
at Main.main(Main.java)
到底发生了什么???更重要的是,我该如何解决?
- 我尝试在
NSOperationQueue...之前添加operation.addStrongRef(runnable);。没有区别。 - 我还尝试将匿名内部类移动到它自己的类中,该类有一个
private final字段来存储传递给其构造函数的runnable。结果相同。
我只是错过了一些非常明显的东西吗???
【问题讨论】:
标签: ios nullpointerexception robovm