Смешивание C ++ с Objective-C и Java - PullRequest
0 голосов
/ 08 января 2019

Здравствуйте. Я заметил, что при вызове java-метода из C ++ мы используем помощник JNI, и в вызываемом нами методе мы должны объявить это, но для target-c мы не вызываем никакого эквивалента runOnUiThread? Я хотел бы знать, почему это так, имеет ли это какое-то отношение к тому, что target-c и c ++ можно смешивать в одном файле (.mm)?

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

1 Ответ

0 голосов
/ 08 января 2019

Ваше предположение верно; Objective-C (++) (в отличие от Java или Swift) переплетен с C ++, и вы можете смешивать код Objective-C с кодом C ++. Конечный файл .mm на самом деле является подсказкой компилятору, что такое сочетание предназначено. Для Java и Swift вам нужен «мост», такой как JNI, для доступа к артефактам другого языка.

Как и в общем случае в Objective-C, любой вызов из основного потока (который является потоком пользовательского интерфейса) будет выполняться по умолчанию в основном потоке, если вы явно не отправите его в другой асинхронный поток. Так что явное runOnUiThread излишне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...