2012-09-20 17 views
15

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

+31

Es la diferencia entre una pluma, Inglés, y una biblioteca pública. –

+2

@Catfish_Man Realmente fue un hombre muy útil, no ... especialmente para cualquiera que empiece a sumergirse en el desarrollo de iOS – Leo

Respuesta

32

Objective-C es un lenguaje de programación. Se podría decir que es solo una descripción de cómo son los programas válidos de Objective-C y lo que significan. Si tiene una lista de código fuente escrita en Objective-C, necesita un intérprete o un compilador para poner en funcionamiento la lista. Los lenguajes como Objective-C usualmente 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. Por ejemplo, algunas personas escriben Objective-C para Linux.

Puede utilizar un editor de texto para escribir las fuentes y un compilador para convertirlas en programas reales, pero con las tecnologías modernas hay mucho más por lo que preocuparse, de modo que hay otro programa para facilitar su trabajo. Estos se llaman Entornos de Desarrollo Integrado, o IDE. Un IDE le ofrece una forma 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 sus fuentes en sí, simplemente llama al compilador independiente (LLVM). Y Xcode no es el único IDE que puede usar para desarrollar aplicaciones Objective-C, por ejemplo, AppCode.

escritura iOS u OS X aplicaciones desde cero cada vez serían mucho tiempo. Es por eso que Apple ofrece 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 ocupa de la mayoría de las cosas que las aplicaciones tienen en común. Estas bibliotecas se llaman Cocoa.

Ahora, si no puede encontrar la manera de extender una clase, es muy probable que hablar de Objective-C. No tiene nada que ver con Xcode o Cocoa, podría escribir muy bien el código GNUstep para Linux utilizando Vim como IDE y GCC como compilador. Por otro lado, si tu proceso de compilación de Xcode falla debido a alguna configuración misteriosa, o si estás tratando de construir una biblioteca estática en Xcode, eso es claramente un problema de Xcode. Y si no puede averiguar cómo usar alguna facilidad NSObject o la clase NSFileManager, eso es Cocoa. (Pero no tiene que ser relacionado con Xcode, ya que se podía utilizar AppCode o TextMate como su IDE!)


Originally available on my blog. Siéntase libre de vincular a la publicación del blog o esta pregunta cuando vuelva a etiquetar o explicar la diferencia.

+0

buena publicación, pero tengo que preguntar, basado en esta declaración ... "Estas bibliotecas se llaman Cocoa" ... una surge la pregunta, ¿cuál es la diferencia entre el marco de "Fundación" y "Cocoa"? ¿Cocoa se sienta encima del marco de la Fundación? – Leo

+0

Sí, se podría decir que Cocoa es la capa superior de bibliotecas que se encuentra sobre la Fundación (ver http://goo.gl/H22M8g). En otras palabras, la descripción es un poco imprecisa en este punto: Cocoa es solo una parte de la pila de software ofrecida por Apple para escribir software. – zoul

+0

Muy buena y explicativa respuesta ... y realmente me ayudó a saber la diferencia. Pero aquí viene otra pregunta :) por las bibliotecas de Cocoa; ¿Es lo mismo que las API? – Ahmadgeo

6

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 construcción (determinar qué construir para producir el objetivo deseado) y bastantes otras cosas.

Objective-C es el lenguaje principal en el que los desarrolladores escriben dicho software. Pueden escribir fragmentos en C puro, usar C++ o combinarlo con Objective-C (produciendo Objective-C++) o escribir algunos o todos el programa en otro idioma 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 idiomas en código ejecutable. La mayoría de los mensajes de error provienen de Clang, y Xcode se basa en gran medida en la indexación de búsqueda, el resaltado de sintaxis y la finalización del nombre del código Objective-C.

Cacao y el tacto son los entornos de aplicaciones. Cada uno es un conjunto de muchos marcos individuales (bibliotecas almacenadas en carpetas llamadas blahblah.marco), tales como:

  • Fundación (ambos): utilidades generales orientados a objetos, incluyendo NSString, NSURL, NSFileManager, etc.
    • Fundación Core (ambos): Mayormente lo mismo, pero diferente, principalmente en tener una API basada en C en lugar de Objective-C
  • Kit Aplicación (Mac): Aplicación y ventanas marco
  • UIKit (iOS): Aplicación y ventanas marco
  • Core Gr aphics (ambos): Dibujo
  • Core Animation (ambos): Sprite-gestión y animación marco

(y muchos, muchos más de donde vinieron, sobre todo en el Mac)

Así:

  • usted puede utilizar un marco, además de cacao o de tacto, pero usted tiene que tener algo de código táctil Cacao/Cocoa, en algún nivel, a fin de que su aplicación a hablar con el sistema, recibir eventos, dibujar, etc. t específicamente dirigido a Mac y/o iOS incluirá las envolturas relevantes para usted, en diferentes niveles de calidad.
  • Puede utilizar un idioma además de Objective-C, pero tendrá mucha incomodidad 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 (particularmente 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 App Stores de Apple esperan que las aplicaciones se construyan de una manera particular (especialmente con respecto a la firma de código), a menos que Al no estar dirigido a las tiendas de aplicaciones, cualquier otro sistema de compilación debe replicar lo que hace Xcode o arriesgarse a que sus usuarios reciban rechazos.
1

Un error evidente está cometiendo una diferencia al no distinguir Xcode de todo lo demás. Xcode es la herramienta que está utilizando para programar en - para editar código, ejecutar código, etc. Por lo tanto, si tiene problemas con la herramienta (por ejemplo, la ventana no muestra su código correctamente, o está teniendo 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 de cacao. Pero no necesariamente sabrás cuál.

  • Es un problema de Objective-C si la raíz de su problema es que no se sabe cómo funciona el idioma (por ejemplo, que no saben lo que el asterisco es para, o que la declaración no es de instancias, o que los mensajes a nil no salgan pero tampoco hagan nada).

  • Es un problema de cacao si no capta la arquitectura de delegado o cómo funciona un controlador de vista.

Pero mi experiencia de la forma en que las personas hacen preguntas es que se puede ser ignorante de lo que de estos se ignoran. No me refiero a usted personalmente, me refiero a todos nosotros.Esto puede hacer que sea difícil plantear la pregunta correctamente porque no sabes exactamente qué es lo que no sabes; si lo hicieras, lo sabrías y probablemente no tendrías ningún problema (lo harías solucionar el problema y pasar a lo siguiente).

Cuestiones relacionadas