Objective-C может быть переведен в прямую C еще. В API времени выполнения ObjC нет ничего, что требовало бы C ++, хотя внутренности реализованы в C ++ здесь и там. Я не думаю, что это изменилось. Переписчик, однако, может генерировать C ++ просто потому, что это наиболее удобная / эффективная цель для генерации.
В процессе сборки XCode нет шага перевода. Компилирует собственный код Objective-C; то есть ObjC преобразуется прямо во временный формат, который компилятор использует для генерации исполняемых файлов, точно так же, как C ++, C и любой другой язык, который изначально поддерживается компилятором.
Переводчик существует явно, потому что в Visual Studio нет компилятора Objective-C. До переписывания другой компилятор использовался для компиляции кода ObjC в библиотеки в Windows, а затем объединял эти библиотеки с кодом, скомпилированным в Visual Studio, для получения конечных приложений.
Это работало, но отладка была действительно очень сложной, потому что любой стек вызовов, который проходил между двумя стилями генерации кода, не мог быть отлажен из одного отладчика!