Короче говоря, C ++ отлично подходит для программ OS X и iOS и прекрасно работает с Objective-C.
Более подробно:
Однако я также хотел бы заняться графическим программированием; OpenFrameworks и Cinder - две библиотеки, которые бросаются в глаза, но тогда мы находимся в C ++.
Я не буду говорить об этих библиотеках напрямую.
Чтобы ответить на ваш вопрос в более общих терминах: C ++ прекрасно подходит для вашего приложения, поскольку C, C ++, ObjC и ObjC ++ являются первоклассными языками разработки для приложений iOS.
Я родом из Java / Swing / Processing ... мало знаю о семействе C. Насколько эффективно вы можете вызывать библиотеки C и C ++, такие как Cinder и OF, из собственного Какао?
Objective-C ++ позволяет использовать C, C ++ и Objective-C в одном переводе. Не стесняйтесь использовать / комбинировать C ++, C или ObjC, где это необходимо. Время компиляции увеличится, и есть некоторые ограничения *, если вы выберете этот маршрут. В остальном поддержка очень хорошая. Даже Apple использует большое количество C ++ в своих приложениях / библиотеках.
И бонусные баллы: будет ли такое решение работать на iPhone или iPad?
Определенно. Поддержка c ++ 11 для iOS и OS X в настоящее время немного отстает. Тем не менее, команда Clang очень быстро добавила поддержку. Скорее всего, будут некоторые трудности, если вы захотите использовать новейшие функции, поэтому я бы сказал, что вам не нужны новейшие возможности C ++ и компилятора, если ваш проект зависит от этого. Конечно, не мешает пробовать вашу программу, используя последние функции clang с каждым выпуском, чтобы определить, насколько хорошо она работает с вашими программами.
Обновление: на данный момент (8 ноября 2011 г.) clang может обрабатывать почти весь код C ++ 2003, который я к нему добавляю. Скорость и размер кода различаются по сравнению с GCC + LLVM. Я бы не хотел отказываться ни от этого, но оба компилятора хорошо работают для меня с C ++ 2003, и Apple GCC не будет поддерживать c ++ 11, поэтому самое время начать тестировать clang, если вам нужны функции c ++ 11 в ближайшее время.
- C ++ идеально подходит (IMO) для общей критически важной для iOS разработки, если ваша команда знает, как ее использовать.
- Сочетание C, ObjC и C ++ очень эффективно, если вы используете правильные функции каждого языка по правильным причинам и существует хорошая совместимость. Это относится к OS X лет назад (хотя в то время компилятором был GCC).
* ограничения: это разумные ограничения - все функции, которые вам нужны, существуют, но некоторые люди могут ожидать чего-то невозможного. наиболее распространенной, вероятно, является невозможность получения типов различных объектных моделей. то есть вы не можете разумно не создавать тип c ++ из типа objc, но вы можете свободно объявлять ivars нескольких типов в любом типе объекта.