Можно ли программировать iPhone на C ++? - PullRequest
124 голосов
/ 07 ноября 2008

Я все за языковое разнообразие, но Цель C безумна. Поэтому мне любопытно: возможно ли кодировать приложения iPhone на C ++, используя API-интерфейс Cocoa и т. Д.

Ответы [ 11 ]

62 голосов
/ 07 ноября 2008

Хотя Objective-C действительно изначально кажется «безумным», я призываю вас придерживаться его. Как только у вас появляется момент «а-ха», внезапно все начинает обретать смысл. Для меня потребовалось около 2 недель целенаправленной концентрации Objective-C, чтобы по-настоящему понять структуру Какао, язык и то, как все это сочетается. Но как только я действительно "получил" это, это было очень очень захватывающе.

Звучит клише, но это правда. Выложи это.

Конечно, если вы используете библиотеки C ++ или существующий код C ++, вы можете использовать эти модули с Objective-C / Objective-C ++.

56 голосов
/ 07 ноября 2008
41 голосов
/ 07 ноября 2008

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

Это основная цель Objective-C - интерфейс пользовательского интерфейса и обработка событий.
И это прекрасно работает для этой цели.

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

27 голосов
/ 07 ноября 2008

Прежде всего, сказать, что Objective-C "безумен", - это юмористически - у меня рядом с книгой Бьярна Страуструпа C ++, которая насчитывает 1020 страниц. PDF от Apple для Objective-C - 141.

Если вы хотите использовать UIKit, вам будет очень и очень трудно что-либо делать в C ++. Любое серьезное приложение для iPhone, которое соответствует пользовательскому интерфейсу Apple, требует, чтобы его части пользовательского интерфейса были написаны на Objective-C. Только если вы пишете игру для OpenGL, вы можете почти полностью придерживаться C / C ++.

14 голосов
/ 09 ноября 2008

Имея некоторый опыт в этом, вы действительно можете использовать код C ++ для своего «основного» кода, но вы должны использовать target-C для всего, что касается iPhone.

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

3 голосов
/ 12 мая 2012

Я не уверен насчет C ++, но вы определенно можете кодировать приложения для iPhone на C #, используя продукт под названием MonoTouch .

Вы можете увидеть этот пост для подробного обсуждения MonoTouch против Obj-C: Как выбрать между MonoTouch и Objective-C?

3 голосов
/ 22 января 2011

Вы должны использовать Objective C для взаимодействия с API Какао, так что выбора нет. Конечно, вы можете использовать столько C ++, сколько захотите, за кулисами (Objective C ++ делает это легко).

Это действительно безумный язык, но это также ... довольно забавно использовать, когда вы немного привыкли к нему. : -)

2 голосов
/ 27 октября 2012

Я в процессе переноса приложения для Android, интенсивно использующего вычислительные ресурсы, написанного на Java, на iOS6. Я делаю это, портируя части не-пользовательского интерфейса с Java на C ++, записывая (минимальные) части пользовательского интерфейса в Obj-C, и оборачивая первые в (маленький) интерфейс C, используя стандартную технику C / C ++, так, чтобы к нему можно получить доступ из Obj-C, который в конце концов является надмножеством C.

До сих пор это было эффективно, и я не сталкивался ни с какими хитами. Кажется, это законный подход, так как Xcode позволяет создавать классы C ++, а также классы Obj-C, а некоторые из официального примера кода делают это таким образом. Мне не нужно было выходить за пределы официально поддерживаемых интерфейсов, чтобы сделать это.

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

1 голос
/ 09 марта 2015

Да, но думать, что вы можете программировать все виды программ на одном языке, является ошибочной идеей, если вы не пишете очень простые программы. Цель C - для Какао, а C # - для .NET. Использование правильного инструмента для правильной работы. Попытка заставить C ++ взаимодействовать с Какао с помощью написания связующего кода и попытка заставить код C ++ вести себя в соответствии с требованиями Какао - не хорошая идея и не ожидание C ++ производительность с объективом С есть. Вам следует постараться разработать макет и архитектуру приложения с учетом имеющихся навыков и определить, какая часть должна быть написана на каком языке, а затем строить соответственно.

0 голосов
/ 02 декабря 2014

Это может быть немного оффтоп, но в любом случае. Вы можете программировать с ++ прямо на устройствах iOS. Проверьте приложение CppCode ios - http://cppcode.info. Я считаю, что это помогает учить c и c ++ и target-c позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...