Насколько хорошо поддерживается Objective-C ++?

StackOverflow https://stackoverflow.com/questions/406753

  •  03-07-2019
  •  | 
  •  

Вопрос

Я изучал Objective-C и Cocoa, прокладывая себе путь через Книга Хиллегасса и мне приходит в голову, что, возможно, мне было бы лучше использовать Objective-C ++.Objective-C кажется очевидным выбором для разработки пользовательских интерфейсов, но у меня очень сильный опыт работы с C ++, и я хотел бы разрабатывать серверные части приложений на C ++ и использовать Objective-C ++ для интеграции пользовательского интерфейса.Но мне интересно, продолжит ли Apple разрабатывать Objective-C ++ или это зайдет в тупик.

Кто-нибудь там использует Objective-C ++?

Это было полезно?

Решение

Отказ от ответственности:Я не работаю и не выступаю от имени Apple, так что это мое мнение:

Я не могу говорить за крупные магазины разработчиков, но в моей небольшой группе мы использовали Objective-C ++ как для интеграции библиотек C ++, так и, как вы предлагаете, для написания бэкэндов на C ++.Как упоминает @alxp, такие вещи, как обработка исключений за пределами языковой границы, являются болезненными, но при небольшом планировании большинства из этих проблем можно избежать.Для опытных разработчиков C ++ выигрыш может стоить затраченных усилий.

Что касается поддержки, я думаю, вы можете предположить, что поддержка в ее нынешнем состоянии не исчезнет в ближайшее время.Это часть базы кода GCC и Лязг toolchain (набор инструментов для следующего компилятора Apple) полностью поддерживает Objective-C ++.С другой стороны, нет никакой официальной гарантии, что Apple продолжит развивать интеграцию — например, исправит некоторые ошибки.

Для текущих проектов я бы сказал, что если использование Objective-C ++ приносит пользу, то можно безопасно полагаться на существующую поддержку, и вы должны использовать ее.

Другие советы

Единственный раз, когда я использовал ObjC ++, это для переноса библиотек, чтобы сделать их доступными из моего ObjC-кода.Противоречия между тем, как ObjC ++ и ObjC обрабатывают такие вещи, как исключения, создание и уничтожение классов, просто сделали жонглирование двумя языками в одном проекте слишком сложной задачей.

Я не думаю, что поддержка исчезнет в ближайшее время, как это произошло с Cocoa / Java, поскольку это довольно прочная часть GCC, и тот факт, что Objective-C ++ компилируется до простого C ++ таким же образом, как Objective-C может компилироваться до простого C, но я все еще не нахожу это очень приятной средой для создания программного обеспечения по сравнению с Objective-C и возможностью комфортно полностью использовать фреймворки, предоставляемые OS X.

Objective-C ++, вероятно, будет поддерживаться до тех пор, пока существует Objective-C.Obj-C ++ является основной целью для лязг, который, как ожидается, в конечном итоге заменит gcc в качестве предпочтительного компилятора Apple.Использование, вероятно, возрастет по мере того, как углеродные приложения будут переведены на передовые технологии Cocoa.

Конечно, слово “вероятно” встречается дважды выше, потому что Apple настолько волнующе непредсказуема.:-)

Я подозреваю, что Apple продолжит поддерживать Objective C ++ некоторое время, поскольку я не вижу каких-либо значительных повторяющихся усилий, необходимых Apple для поддержки Objective C ++, поскольку Apple обновляет Cocoa и Objective C ++.

На днях я был удивлен, когда попытался провести рефакторинг некоторого кода Objective-C, который находился в файле Objective-C ++, используя поддержку рефакторинга Xcode.Несмотря на то, что пункты меню включены, я получил сообщение "Не удается выполнить рефакторинг кода Objective-C ++.Xcode может выполнять рефакторинг только кода C и Objective-C."сообщение об ошибке.Таким образом, хотя компиляция Objective-C ++ будет продолжать функционировать бесконечно, я подозреваю, что Objective-C ++ будет гражданином второго сорта в Xcode.

Я убрал это из всего своего кода.Файлов .mm нет.

Но вам нужны файлы .cpp, чтобы взаимодействовать с файлами .m.Решением является файл .c /.h, который сохраняет нетронутым гематоэнцефалический барьер.

C ++ с objective-C обычно - это просто слишком большой багаж.

Objective-C - это на самом деле просто набор кода на C, который эмулирует объекты на языке C, и он по-прежнему использует компилятор C, включая заголовочные файлы Objective-C.Использование Objective-C ++ использует компилятор C ++ и включает заголовки Objective-C в качестве кода C, поскольку C ++ будет запускать код C.Objective-C ++ - это, по сути, просто C, C ++ и Objective-C (который на самом деле просто C)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top