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

Каковы преимущества использования Objective-C над С++

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

4b9b3361

Ответ 1

Как и многие другие, я только что начал рассматривать Obj-C из-за iPhone. Я сделал много С++ и С#, и из того, что я вижу, Obj-C имеет принципиально иной подход к OO в том, что он добавляет Smalltalk-подобный обмен сообщениям на C. Подобно С++, он в основном по-прежнему C-совместим, но расширения OO позволяют вы отправляете любое сообщение на любой объект. В этом смысле он не статически вводится как С++ и С#, где вещи, которые может сделать объект, привязаны к классу. В Obj-C вы можете отправить сообщение объекту, даже если оно его не поддерживает. Затем объект может перенаправить его, если он не знает, что с ним делать.

Самое интересное, что вы можете добавлять интерфейсы (протоколы) во время выполнения, и вы можете добавлять собственные обработчики, которые перехватывают и скрывают обработчики сообщений для существующих классов.

В целом, там гораздо больше гибкости при обработке сообщений, больше похоже на то, что вы делаете в Ruby или Smalltalk. Хорошо ли иметь этот тип OO, привитый на C или нет, я пока не могу сказать, в некотором смысле подход С++ лучше мешает оригинальной идее C, но, с другой стороны, подход Obj-C OO больше что пугают ОО.

Ответ 2

От Некоторые приятные функции языка Objective-C:

  • Классы - объекты
  • Динамическая типизация и необязательная статическая типизация
  • Категория
  • Отправка сообщений
  • Синтаксис выраженного сообщения
  • Самоанализ
  • Динамическое время выполнения
  • Автоматическая сборка мусора
  • C внутри
  • Свободный С++
  • Простота
  • Доступ к технологиям Apple

Ответ 3

Я нахожу синтаксис objective-c немного чище, чем С++, хотя я знаю, что я в меньшинстве здесь

Ответ 4

Функции Objective C OO используют динамическую типизацию вместо статической (компиляции) времени. То, что основное отличие в подходах двух языков - будь то преимущество или нет, зависит от вашего мнения о статическом и динамическом типировании.

Ответ 5

Я считаю, что синтаксис Objective-C сначала немного "странный", особенно если вы исходите из фона C/С++ (как и я). Если вы планируете писать приложения для Mac или iPhone, Cocoa разработка - это путь. У меня была возможность немного поработать на Mac в течение месяца после этого Spring и решила написать его на С++, используя библиотеки Qt, так как я был хорошо знаком с ними, и время было существенным.

Если у вас есть Mac, сделайте снимок! На нем есть много информации, и есть неплохие инструменты для разработки.

Ответ 6

Часть того, что делает Objective-C настолько отличным, это не язык (хотя это большая его часть), он поддерживает структуру Cocoa (или CocoaTouch) (по крайней мере, для 99% objc users; -)

В практическом плане я раньше был программистом на С++ в старые "классические" дни Mac. Переключившись на Objective-C, Cocoa и Mac OS X, я обнаружил, что стал намного более продуктивным. Трудно сказать, насколько эффективнее, но от 50% до 100% чувствует себя правильно.

Ответ 7

Если вы используете Linux, вы можете установить GNUStep, который обеспечивает довольно хорошую совместимость с Cocoa. Это может помочь вам начать разработку Objective-C/Cocoa без владения Mac. Лучшие ресурсы для обучения Objective-C [на мой взгляд] с Apple.

http://developer.apple.com/referencelibrary/Cocoa/index.html

Ответ 8

Ну, если вы кодируете некоторые платформы, такие как IPhone, требуется Objective-C. Objective-C также использует динамическую (временную) типизацию, которую многие люди предпочитают статическую (время компиляции).

Ответ 9

Он более динамичен, чем С++, и сильно зависит от Smalltalk. Я не считаю это "лучше", чем С++, напротив, но некоторые люди делают.

Ответ 10

WebKit первоначально был проектом С++ (khtml из KDE), который позднее был адаптирован Apple к более совместимому с Cocoa -environment и тем самым получил свой Objective-C уровень.

Ответ 11

Для разработки Mac и iPhone это определенно лучше. В последней версии есть GC, поэтому, если вам это нравится, вам, вероятно, понравится это лучше, чем С++.