В чем разница между Xcode, Objective-C и Cocoa?

этот вопрос всплывает довольно часто здесь, даже если только косвенно, когда пользователи mistag на iOS вопросы. Итак, в чем разница между Xcode, Objective-C и Cocoa?

3 ответов


Objective-C-это язык программирования. Можно сказать, что это просто описание того, как выглядят действительные программы Objective-C и что они означают. Если у вас есть список исходного кода, написанный в Objective-C, вам нужен интерпретатор или компилятор, чтобы заставить список работать. Такие языки, как Objective-C, обычно компилируются, поэтому большинство людей используют компилятор (например,LLVM). Objective-C почти исключительно используется для разработки для iOS и OS X, но есть и другие применения - как например, некоторые люди пишут Objective-C для Linux.

вы можете использовать текстовый редактор для записи источников и компилятор, чтобы превратить их в реальные программы, но с современными технологиями есть гораздо больше, чтобы заботиться, так что есть другая программа, чтобы сделать вашу работу проще. Они называются интегрированными средами разработки, или IDE. IDE предлагает Вам удобный способ редактировать источники, компилировать их, отлаживать полученные программы, читать документацию и многое другое. Xcode-одна из таких IDE. Важным замечанием здесь является то, что Xcode не компилирует ваши источники сам, он просто вызывает автономный компилятор (LLVM). И Xcode-не единственная IDE, которую вы можете использовать для разработки приложений Objective-C-there's AppCode, например.

написание приложений iOS или OS X с нуля каждый раз будет очень трудоемким. Именно поэтому Apple предоставляет разработчикам хороший набор библиотек. Библиотеки просто огромное количество исходного кода, написанного Apple, и этот исходный код заботится о большинстве вещей, которые имеют общие приложения. Эти библиотеки называются Cocoa.

теперь, если вы не можете понять, как расширить класс, вы, скорее всего, говорите об Objective-C. Это не имеет ничего общего с Xcode или Cocoa, вы можете очень хорошо написать некоторые GNUstep код для Linux с использованием Vim в качестве IDE и GCC в качестве компилятора. С другой стороны, если ваш процесс сборки Xcode завершается неудачей из-за какой-то таинственной настройки или если вы пытаетесь создать статическую библиотеку в Xcode, это явно проблема Xcode. И если вы не можете понять, как использовать какой-либо объект NSObject или класс NSFileManager, это Cocoa. (Но это не обязательно должно быть в Xcode, связанного, как вы могли бы использовать AppCode или текст. сообщ как ваш IDE!)


первоначально доступно в моем блоге. Не стесняйтесь ссылаться на сообщение в блоге или этот вопрос при перенастройке или объяснении разницы.


Xcode-это интегрированная среда разработки (IDE)-приложение, которое разработчики используют для написания программного обеспечения для iOS и/или OS X. Она включает в себя редактор, систему сборки (определение того, что нужно построить для создания желаемой цели) и многое другое.

Objective-C-основной язык, на котором разработчики пишут такое программное обеспечение. Они могут писать биты на чистом C, использовать C++ или комбинировать его с Objective-C (производя Objective-C++), или писать некоторые или все программы на другом языке, таком как MacRuby, Java (с j2objc) или C# (с MonoTouch).

Xcode включает компилятор Clang, который превращает код, написанный на Objective-C, C и нескольких других языках, в исполняемый код. Большинство сообщений об ошибках поступают из Clang, и Xcode в значительной степени полагается на него для индексирования поиска, подсветки синтаксиса и завершения имени кода Objective-C.

Cocoa и Cocoa Touch-Это рамки приложений. Каждый набор из множества отдельных фреймворки (библиотеки, хранящиеся в папках с именем blahblah.основы), например:

  • Foundation (оба): общие объектно-ориентированные утилиты, включая NSString, NSURL, NSFileManager и т. д.
    • Core Foundation (оба): в основном то же самое, но разные, главным образом в том, что API на основе C, а не Objective-C
  • набор приложений (Mac): рамки приложений и окон
  • UIKit (iOS): применение и окно рамки
  • Core Graphics (оба): рисование
  • Core Animation (оба): Sprite-управление и анимация framework

(и многие, многие другие, откуда они пришли, особенно на Mac)

Так:

  • вы можете использовать рамки, кроме какао или какао Touch, но вы должны будете иметь какой-то код касания какао / какао, на некотором уровне, для вашего применения поговорить с системой, получить события, нарисовать, ЕТК. Фреймворки, специально предназначенные для Mac и / или iOS, будут включать соответствующие оболочки для вас на разных уровнях качества.
  • вы можете использовать язык помимо Objective-C, но у вас будет много синтаксической неловкости, так как большинство Cocoa и Cocoa Touch предназначены для уникальных синтаксических функций Objective-C (особенно селекторов).
  • вы можете использовать редактор помимо Xcode, и вы даже можете использовать систему сборки помимо Xcode( например, make), но магазины приложений Apple ожидают приложения построены определенным образом (особенно в отношении подписи кода), поэтому, если вы не нацелены на магазины приложений, любая другая система сборки должна реплицировать то, что делает Xcode, или рисковать тем, что ее пользователи получат отказы.

явная ошибка не в состоянии отличить Xcode от всего остального. Xcode-это инструмент, который вы используете для программирования в-для редактирования кода, запуска кода и т. д. Поэтому, если у вас возникли проблемы с инструмент (например, окно не показывает вам ваш код должным образом, или у вас возникли проблемы с рисованием интерфейса и т. д.), это проблема Xcode.

Если вы не понимаете, почему ваш код не работает, у вас, вероятно, есть проблема Objective-C или какао проблема. Но вы не обязательно знаете, что именно.

  • Это проблема Objective-C, если корень вашей проблемы заключается в том, что вы не знаете, как работает язык (например, вы не знаете, для чего предназначена звездочка, или что объявление не является экземпляром, или что сообщения nil не ошибаются, но ничего не делают).

  • это проблема какао, если вы не понимаете архитектуру делегата или как работает контроллер представления.

но мой опыт того, как люди задают вопросы, заключается в том, что вы можете не знать , который