tutorial programación objective lenguaje example caracteristicas objective-c xcode cocoa-touch cocoa

objective c - programación - ¿Cuál es la diferencia entre Xcode, Objective-C y Cocoa?



objective-c++ (3)

Esta pregunta aparece con bastante frecuencia aquí, aunque solo sea implícitamente cuando los usuarios confunden sus preguntas sobre iOS. Entonces, ¿cuál es la diferencia entre Xcode, Objective-C y Cocoa?


Objective-C es un lenguaje de programación. Se podría decir que es solo una descripción de cómo se ven los programas válidos de Objective-C y qué significan. Si tiene una lista de código fuente escrita en Objective-C, necesita un intérprete o un compilador para que la lista funcione. Los lenguajes como Objective-C generalmente se compilan, por lo que la mayoría de la gente usa un compilador (como LLVM ). Objective-C se utiliza casi exclusivamente para desarrollar para iOS y OS X, pero también hay otros usos, como ejemplo, algunas personas escriben Objective-C para Linux.

Puede usar un editor de texto para escribir las fuentes y un compilador para convertirlos en programas reales, pero con las tecnologías modernas hay mucho más que cuidar, de modo que existe otro programa para facilitar su trabajo. Estos se denominan entornos integrados de desarrollo o IDE. Un IDE le ofrece una manera conveniente de editar las fuentes, compilarlas, depurar los programas resultantes, leer la documentación y muchas otras cosas. Xcode es uno de esos IDE. Una observación importante aquí es que Xcode no compila las fuentes en sí, simplemente llama al compilador independiente (LLVM). Y Xcode no es el único IDE que puede usar para desarrollar aplicaciones de Objective-C; hay AppCode , por ejemplo.

Escribir aplicaciones iOS o OS X desde cero cada vez tomaría mucho tiempo. Es por eso que Apple proporciona a los desarrolladores un buen conjunto de bibliotecas. Las bibliotecas son simplemente una gran cantidad de código fuente escrito por Apple, y este código fuente se encarga de la mayoría de las cosas que las aplicaciones tienen en común. Estas bibliotecas se llaman cacao.

Ahora, si no puedes averiguar cómo extender una clase, lo más probable es que estés hablando de Objective-C. No tiene nada que ver con Xcode o Cocoa, podría estar muy bien escribiendo algo de código GNUstep para Linux usando Vim como IDE y GCC como compilador. Por otro lado, si el proceso de compilación de Xcode falla debido a una configuración misteriosa, o si está intentando construir una biblioteca estática en Xcode, eso es claramente un problema de Xcode. Y si no puede descubrir cómo usar alguna instalación de NSObject o la clase NSFileManager, eso es Cocoa. (Pero no tiene que estar relacionado con Xcode, ya que podría usar AppCode o TextMate como su IDE).

Originalmente disponible en mi blog . Siéntase libre de enlazar con la publicación del blog o con esta pregunta cuando vuelva a marcar o explique la diferencia.


Un error claro es no diferenciar Xcode de todo lo demás. Xcode es la herramienta que está utilizando para programar, editar código, ejecutar código, etc. Por lo tanto, si tiene problemas con la herramienta (por ejemplo, la ventana no le muestra su código correctamente o si tiene problemas para dibujar). su interfaz, etc.), eso es un problema de Xcode.

Si no entiende por qué su código no funciona , es probable que tenga un problema de Objective-C o un problema de Cocoa. Pero no necesariamente sabrás cuál.

  • Es un problema de Objective-C si la raíz de su problema es que no sabe cómo funciona el lenguaje (por ejemplo, no sabe para qué es el asterisco, o esa declaración no es una instanciación, o que los mensajes a nula no lo hacen). error fuera pero no hagas nada tampoco).

  • Es un problema de Cocoa si no captas la arquitectura delegada o cómo funciona un controlador de vista.

Pero mi experiencia de la forma en que las personas plantean preguntas es que usted puede ignorar cuál de estos desconoce. No me refiero a ti personalmente, me refiero a todos nosotros. Esto puede hacer que sea difícil plantear la pregunta correctamente porque no sabe qué es exactamente lo que no sabe. Si lo hiciera, lo sabría y probablemente no tendría un problema. estar solucionando el problema y en la siguiente cosa).


Xcode es el entorno de desarrollo integrado (IDE), la aplicación, que los desarrolladores utilizan para escribir software para iOS y / o OS X. Incluye el editor, el sistema de compilación (que determina qué compilar para producir el objetivo deseado) y una algunas otras cosas

Objective-C es el lenguaje principal en el que los desarrolladores escriben dicho software. Pueden escribir fragmentos del mismo en C puro, usar C ++ o combinarlo con Objective-C (que produce Objective-C ++), o escribir parte o todo el programa en otro lenguaje completamente, como MacRuby, Java (con j2objc) o C # (con MonoTouch).

Xcode incluye el compilador Clang, que convierte el código escrito en Objective-C, C y algunos otros lenguajes en código ejecutable. La mayoría de los mensajes de error provienen de Clang, y Xcode se basa en gran medida en ellos para la indexación de búsqueda, el resaltado de sintaxis y la finalización del nombre del código Objective-C.

Cocoa y Cocoa Touch son marcos de aplicación. Cada uno es un conjunto de muchos marcos individuales (bibliotecas almacenadas en carpetas llamadas blahblah.framework), tales como:

  • Base (ambas): utilidades generales orientadas a objetos, incluyendo NSString, NSURL, NSFileManager, etc.
    • Core Foundation (ambos): principalmente lo mismo, pero diferente, principalmente por tener una API basada en C en lugar de Objective-C
  • Application Kit (Mac): marco de aplicación y ventanas
  • UIKit (iOS): marco de aplicación y ventanas
  • Gráficos principales (ambos): Dibujo
  • Core Animation (ambos): Sprite-management y animación framework

(y muchos, muchos más de donde vinieron, especialmente en Mac)

Asi que:

  • Puede usar un marco además de Cocoa o Cocoa Touch, pero tendrá que tener algún código de Cocoa / Cocoa Touch, en algún nivel, para que su aplicación pueda comunicarse con el sistema, recibir eventos, dibujar, etc. target Mac y / o iOS incluirán los envoltorios relevantes para usted, en diferentes niveles de calidad.
  • Puede usar un lenguaje además de Objective-C, pero tendrá mucha dificultad sintáctica, ya que la mayoría de Cocoa y Cocoa Touch están diseñados para las características sintácticas únicas de Objective-C (especialmente los selectores).
  • Puede usar un editor además de Xcode, e incluso puede usar un sistema de compilación además de Xcode (como make), pero las tiendas de aplicaciones de Apple esperan que las aplicaciones se construyan de una manera particular (especialmente con respecto a la firma de código), así que a menos que no esté apuntando En las tiendas de aplicaciones, cualquier otro sistema de compilación debe replicar lo que Xcode hace o corre el riesgo de que sus usuarios obtengan rechazos.