2009-01-12 12 views
39

Estoy aprendiendo la programación de Objective-C/Cocoa para Mac. Todos los tutoriales, libros, blogs, podcasts, etc. que he estado utilizando realmente cubren los dos juntos. ¿Hay alguna manera fácil de decir qué piezas son vainilla Objective-C y cuáles vienen de Cocoa?¿Cuál es la diferencia entre Objective-C y Cocoa?

Respuesta

61

Objective-C es el lenguaje ... define todas las cosas como las palabras clave para definir objetos, la sintaxis para el objeto de mensajería, cosas por el estilo.

Cocoa es un framework de desarrollo (en realidad es un framework que combina otros tres frameworks, Foundation, AppKit y CoreData).

Estos marcos (Cocoa) definen todos los objetos que son agradables de usar e interactuar con el sistema operativo, así como una serie de funciones. Por ejemplo, Cocoa define cosas como NSString y NSObject. Actualmente, Cocoa se puede usar con otras vinculaciones de lenguaje, como python o ruby, y también se puede usar con Java. Por lo tanto, si usaba Cocoa con Java, aún obtendría un objeto NSString, pero lo llamaría y usaría desde dentro de una aplicación Java.

Sin vincular a uno de los marcos Cocoa, Objective-C viene con solo una clase de objeto muy básica como una clase de raíz predefinida.

+0

¡Gracias! Estaba especialmente curioso sobre cosas como Foundation, NSString y NSObject –

5

Claro, es bastante fácil - Objective-C es el lenguaje, Cocoa es la API/biblioteca que está utilizando para construir su aplicación Mac.

28

Objective-C es el lenguaje en sí.

Cocoa, anteriormente NextStep, es la API y el tiempo de ejecución que se encuentra en la parte superior de Obj-C. Todo lo que comience con NS (para NextStep) es parte de Cocoa, no es parte del lenguaje.

+9

¡Me he estado preguntando qué significaba ese prefijo NS por un tiempo! –

4

Mire en/usr/include/objc/- en allí está el objetivo puro-C. Todo lo demás es Cocoa. Es posible que notes que casi nunca utilizas directamente nada allí.

Sin embargo, en la práctica no hace mucha diferencia. Cocoa es la biblioteca estándar de Objective-C de facto. La única plataforma en la que se usa Objective-C sin Cocoa es Portable Object Compiler, y supongo que quizás tres personas aún la usen.

+5

Creo que ahora son solo dos personas ... que un chico con la taza de café verde recientemente ha cambiado a C# exclusivamente ... –

+0

Discusión relacionada con Longish, bastante interesante: [¿Por qué? ¿Objective-C no se usa ampliamente más allá de los entornos de Cocoa?] (http://programmers.stackexchange.com/questions/101832/why-is-objective-c-not-widely-used-beyond-cocoa-environments) – Jay

Cuestiones relacionadas