Objective c 回调操作系统不工作

Objective c 回调操作系统不工作,objective-c,codenameone,Objective C,Codenameone,我试图从Objective-CIOS中的本机接口实现中调用一个代码名为one类的静态方法。因此,我使用回调。我导入了想要的类的头文件和 包括CodenameOne\u GLViewController.h 该构建可以工作,但回调不起作用。该方法接受一个字符串,并显示一个具有给定字符串的对话框,但在运行应用程序时不会显示任何内容。以下是回调行: 包\u ClassName\u methodName\u java\u lang\u StringCN1\u THREAD\u GET\u STATE\u

我试图从Objective-CIOS中的本机接口实现中调用一个代码名为one类的静态方法。因此,我使用回调。我导入了想要的类的头文件和

包括CodenameOne\u GLViewController.h

该构建可以工作,但回调不起作用。该方法接受一个字符串,并显示一个具有给定字符串的对话框,但在运行应用程序时不会显示任何内容。以下是回调行:

包\u ClassName\u methodName\u java\u lang\u StringCN1\u THREAD\u GET\u STATE\u PASS\u ARG fromsstringcn1\u THREAD\u GET\u STATE\u PASS\u ARG myString

其中我的字符串声明为NSString*mySTring=@hi

我尝试了一个不接受参数的简单回调方法。不幸的是,它也不起作用

包\类名\方法名\ CN1 \线程\获取\状态\通过\单个参数


我错过什么了吗

我猜优化器删除了本机回调代码,因为它无法检测使用情况,所以回调正在发生,但方法为空

您需要欺骗优化器,使其不会删除主类中的这些回调方法。添加字段:

boolean fake;
注意,我没有初始化它,也没有声明可见性,两者都很重要

如果它是私有的,javac可能会检测到并优化它

然后在init代码中执行以下操作:

// this is always false and is here to prevent the optimizer from stripping code used from native code
if(fake) {
   MyCallbackClass.callback();
}

您可以将任何内容传递给回调,因为调用永远不会发生,但您需要调用所有回调方法来欺骗优化器

发布您的代码片段您的声明是mySTring,但您传递的是mySTring。T字型的区别是打字错误吗?