Насколько хорошо поддерживается Objective-C ++? - PullRequest
33 голосов
/ 02 января 2009

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

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

Ответы [ 7 ]

29 голосов
/ 02 января 2009

Отказ от ответственности: я не работаю и не говорю за Apple, так что это мое мнение:

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

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

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

7 голосов
/ 02 января 2009

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

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

4 голосов
/ 02 января 2009

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

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

2 голосов
/ 02 января 2009

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

1 голос
/ 02 марта 2012

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

0 голосов
/ 03 июля 2013

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

0 голосов
/ 28 февраля 2013

Я взял это из всего своего кода. Нет .mm файлов.

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

C ++ с целью-C - это обычно слишком много багажа.

...