0

您好,我注意到当从 C++ 调用 java 方法时,我们使用 JNI 帮助程序,并且在我们调用的方法中我们必须声明 this ,但是在 Objective-c 上我们不调用任何等效于 runOnUiThread 的方法?我想知道为什么会这样,它与objective-c和c ++能够混合在同一个文件(.mm)中有关吗?

activity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // your code
        }
4

1 回答 1

1

您的假设是正确的;Objective-C(++)(与 Java 或 Swift 不同)与 C++ 交织在一起,您可以将 Objective-c 代码与 C++ 代码混合使用。结束.mm文件实际上是对编译器的一种暗示,即这种混合是有意的。对于 Java 和 Swift,您需要像 JNI 这样的“桥梁”来访问其他语言的人工制品。

与 Objective-C 中的一般情况一样,来自主线程(即 UI 线程)的任何调用都将默认在主线程中执行,除非您将其显式分派给另一个异步线程。所以显式runOnUiThread是多余的。

于 2019-01-07T21:34:28.177 回答