Подтвердить что ты не робот

C vs С++ (Objective-C vs Objective-C ++) для iPhone

Я хотел бы создать портативную библиотеку для iPhone, которая также может быть использована для других платформ.

Мой вопрос заключается в следующем:

Кто-нибудь знает, что лучше всего использовать на iPhone: Objective-C или Objective-C ++? Работает ли он с С++ так же, как Objective-C с C или нет?

Причины: Objective-C является надмножеством C, но Objective-C ++ is not надмножество С++.

Спасибо заранее!

ОБНОВЛЕНИЕ: Как насчет использования памяти, скорости в одной и той же реализации прецедента?

UPDATE1: Если кто-то может предоставить дополнительную информацию, он будет рад.

4b9b3361

Ответ 1

Они не совсем разные языки. Objective-C ++ - это просто Objective-C со слегка ограниченной поддержкой для включения кода на С++. Objective-C является стандартным диалектом, но если вам нужно работать с С++, нет причин не использовать его. AFAIK, самая большая практическая разница (помимо разрешения использования разных библиотек) заключается в том, что Objective-C ++, похоже, компилируется немного медленнее. Просто не забудьте сначала прочитать об этом, если вы решите пойти по этому маршруту, потому что слияние С++ и Objective-C не является 100% -ной бесшовной.

Ответ 2

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

Если вам требуются особые языковые функции, недоступные на C, вы должны сообщить нам, что они собой представляют, чтобы вы могли получить лучший совет =)

Ответ 3

Я считаю, что ваша информация неверна. Objective-C ++ - это надмножество С++. Любой С++ является законным Objective-C ++. Кроме того, вы можете комбинировать Objective-C и код С++ в файле Objective-C ++ (обычно .mm) и (с некоторыми ограничениями) mix Objective-C и переменные экземпляра класса С++ в классе Objective-C ++. Objective-C ++ особенно полезен для взаимодействия между Objective-C и библиотекой С++. Напишите свою кросс-платформенную библиотеку на С++. Затем вы можете вызвать его из Objective-C ++ в приложении. Перечитайте раздел Objective-C ++ руководства по языку Objective-C для получения дополнительной информации.

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

Ответ 4

Если вы собираетесь использовать эту библиотеку на других платформах, кроме iPhone и Mac OS, вы должны использовать С++. Если вы планируете только переносить его в Mac OS, тогда используйте Objective-C. Objective-C ++ - это всего лишь способ интегрировать существующий код С++ в проекты Objective-C. Таким образом, вы не будете писать в нее библиотеку. Однако вы можете использовать Objective-C ++ для использования этой библиотеки из проекта iPhone или Mac.

Ответ 5

Правда, вы можете использовать C или С++ в Xcode. Причина использования Objective C для Cocoa и Cocoa Touch (iphone) - из-за простоты использования и того, как он обрабатывает многие проблемы с памятью, с которыми вы столкнулись самостоятельно. Объектив C и Xcode работают как сон. Я также рекомендовал бы проверить http://www.kevincallahan.org/software/accessorizer.html Accessorizer поражает и сокращает время разработки до ничего.

Сказав, что я не вижу проблем с написанием функций/методов на C или С++ и их использованием в рамках вашего проекта XCode. Просто не ожидайте, что Objective C будет играть так же хорошо на других платформах. Разработка IDE для Apple и Windows различна, и у Microsoft есть хорошая привычка не делать вещи совместимыми с другими средами (а не только с Apple.)

Я рад слышать, как кто-то пытается повторить их код для других проектов:) Слишком много людей забывают создавать свои собственные библиотеки в наши дни, и я не имею ни малейшего понятия, почему.

Надеюсь, это поможет. Ура, Matthew

Ответ 6

Вот ваше предостережение: потратьте сто на то, чтобы стать разработчиком и запустить xcode IDE, с которым вы будете работать на Mac, - это было бы наилучшим решением для вас, поскольку очевидно, что вы не совсем понимаете, как эта платформа работает вообще.

Пожалуйста, не грубите всех, кто пытается вам помочь. Это сообщество построено на уважении. Люди здесь действительно действительно помогают и ухаживают, и в сети осталось несколько таких мест.

Ответ 7

Перейдите на C или С++ - я не вижу причин рекомендовать один над другим, не зная больше о ваших целях.

С точки зрения использования памяти, С++ и C требуют более дисциплинированного кодирования. С точки зрения скорости, C и С++ будут практически в любом случае быстрее, чем любое решение ObjC/ObjС++. Я часто смешиваю свои приложения Objective C с кодом C и С++ и всегда был доволен результатами. Как правильно сказал Джонатан, ObjectiveС++ в основном является мостом для использования кода/библиотек С++ в вашем приложении Objective C/s.

Вы можете свободно использовать объекты С++ из Objective С++. Однако вы не можете использовать объекты Objective C/С++ в С++. Так что это односторонняя дорога. Чтобы преодолеть любые ограничения, наложенные этим ограничением, просто поместите ваши объекты С++ с помощью классов Objective С++, где это необходимо.