你好,我注意到从 C++ 调用 java 方法时我们使用了 JNI 帮助程序,并且在我们调用的方法中我们必须声明 this ,但是在 objective-c 上我们不调用任何等效于 runOnUiThread 的方法?我想知道这是为什么,是否与 objective-c 和 c++ 能够混合在同一个文件 (.mm) 中有关?
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// your code
}
最佳答案
你的假设是对的; Objective-C(++)(与 Java 或 Swift 不同)与 C++ 交织在一起,您可以将 Objective-C 代码与 C++ 代码混合使用。结尾的 .mm
文件实际上是在向编译器提示这种混合是有意的。对于 Java 和 Swift,您需要像 JNI 这样的“桥梁”来访问其他语言的 Artifact 。
在 Objective-C 中,任何来自主线程(即 UI 线程)的调用都将默认在主线程中执行,除非您将其显式分派(dispatch)到另一个异步线程。因此显式 runOnUiThread
是多余的。
关于java - 将 C++ 与 Objective-C 和 Java 混合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54082175/