Можете ли вы использовать библиотеки C ++ в проекте Какао (Obj-C)? - PullRequest
5 голосов
/ 01 июля 2011

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

Однако я также хотел бы заняться графическим программированием;OpenFrameworks и Cinder - две библиотеки, которые бросаются в глаза, но затем мы находимся в C ++.

Я из области Java / Swing / Processing ... не знаю много о семействе C.Насколько эффективно вы можете вызывать библиотеки C и C ++, такие как Cinder и OF, из собственного Какао?

И бонусные баллы: будет ли подобное решение работать на iPhone или iPad?

Ответы [ 3 ]

12 голосов
/ 01 июля 2011

Короче говоря, 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 нескольких типов в любом типе объекта.

6 голосов
/ 01 июля 2011

Можно использовать как OpenFrameworks, так и Cinder в приложениях для iOS (см. Связанный с этим вопрос SO: OpenGL ES, OpenFrameworks, Cinder и IOS creative development ), хотя Apple «предпочитает» разработчиков использовать OpenGL.

3 голосов
/ 02 сентября 2011

На данный момент вы можете использовать Cinder из типичного проекта Cocoa с помощью новой оболочки CocoaCinderGL . Это позволяет вам добавить несколько NSCustomView в ваше приложение, каждое из которых запускает независимый «экземпляр» Cinder. И, очевидно, вы можете подключить столько экземпляров NSButton, NSSliders, сколько захотите. Надеюсь, это поможет!

...