2012-09-20 12 views
15

Questa domanda appare abbastanza spesso qui, anche se solo implicitamente quando gli utenti non visualizzano le loro domande su iOS. Quindi, qual è la differenza tra Xcode, Objective-C e Cocoa?Qual è la differenza tra Xcode, Objective-C e Cocoa?

+31

E 'la differenza tra una penna, inglese, e una biblioteca pubblica. –

+2

@Catfish_Man E 'stato davvero molto utile per l'uomo, non ... specialmente per chi inizia a immergersi nello sviluppo di iOS – Leo

risposta

32

Objective-C è un linguaggio di programmazione. Si potrebbe dire che è solo una descrizione di quali sono i programmi validi di Objective-C e cosa significano. Se hai un elenco di codice sorgente scritto in Objective-C, hai bisogno di un interprete o di un compilatore per far funzionare la lista. Linguaggi come Objective-C sono generalmente compilati, quindi molte persone usano un compilatore (come LLVM). Objective-C è usato quasi esclusivamente per lo sviluppo per iOS e OS X, ma ci sono anche altri usi - ad esempio, alcune persone scrivono Objective-C per Linux.

È possibile utilizzare un editor di testo per scrivere i sorgenti e un compilatore per trasformarli in programmi reali, ma con le tecnologie moderne c'è molto altro da cui fare attenzione, in modo che ci sia un altro programma per semplificare il lavoro. Questi sono chiamati ambienti di sviluppo integrato o IDE. Un IDE ti offre un modo conveniente per modificare i sorgenti, compilarli, eseguire il debug dei programmi risultanti, leggere la documentazione e molte altre cose. Xcode è uno di questi IDE. Un'osservazione importante qui è che Xcode non compila le tue stesse fonti, chiama solo il compilatore standalone (LLVM). Xcode non è l'unico IDE che puoi utilizzare per sviluppare app Objective-C, ad esempio c'è lo AppCode.

Scrivere applicazioni iOS o OS X da zero ogni volta richiederebbe molto tempo. Ecco perché Apple offre agli sviluppatori un buon set di librerie. Le librerie sono semplicemente un'enorme quantità di codice sorgente scritto da Apple, e questo codice sorgente si occupa della maggior parte delle cose che le app hanno in comune. Queste librerie sono chiamate Cocoa.

Ora, se non riesci a capire come estendere una classe, probabilmente stai parlando di Objective-C. Non ha nulla a che fare con Xcode o Cocoa, potresti scrivere molto bene il codice GNUstep per Linux usando Vim come IDE e GCC come compilatore. D'altra parte, se il tuo processo di compilazione Xcode fallisce a causa di alcune impostazioni misteriose, o se stai cercando di creare una libreria statica in Xcode, questo è chiaramente un problema di Xcode. E se non riesci a capire come usare una funzione NSObject o la classe NSFileManager, è Cocoa. (Ma non deve essere Xcode-correlati, come si potrebbe usare AppCode o TextMate come il vostro IDE!)


Originally available on my blog. Sentiti libero di collegarti al post del blog o a questa domanda quando ritocchi o spieghi la differenza.

+0

buon post, ma devo chiedere, in base a questa affermazione ... "Queste librerie si chiamano Cocoa" ... a sorge una domanda, qual è la differenza tra il framework "Foundation" e "Cocoa"? Il cacao si trova in cima alla struttura della Fondazione? – Leo

+0

Sì, si può dire che il cacao sia il livello di libreria più alto in cima alla Fondazione (vedere http://goo.gl/H22M8g). In altre parole, la descrizione è un po 'imprecisa in questo punto: Cocoa è solo una parte dello stack software offerto da Apple per la scrittura di software. – zoul

+0

Risposta molto bella e esplicativa .. e mi ha davvero aiutato a conoscere la differenza. Ma ecco che arriva un'altra domanda :) dalle biblioteche di Cocoa; è uguale alle API? – Ahmadgeo

6

Xcode è l'ambiente di sviluppo integrato (IDE) -lapplicazione- che gli sviluppatori usano per scrivere software per iOS e/o OS X. Include l'editor, il sistema di build (determinare cosa costruire per produrre l'obiettivo desiderato) e molte altre cose.

Objective-C è il linguaggio principale in cui gli sviluppatori scrivono tale software. Possono scrivere bit di esso in C pura, usare C++ o combinarlo con Objective-C (producendo Objective-C++), o scrivere alcuni o tutti il programma in un'altra lingua interamente, come MacRuby, Java (con j2objc) o C# (con MonoTouch).

Xcode include il compilatore Clang, che trasforma il codice scritto in Objective-C, C e alcuni altri linguaggi in codice eseguibile. La maggior parte dei messaggi di errore proviene da Clang e Xcode fa molto affidamento su di esso per l'indicizzazione della ricerca, l'evidenziazione della sintassi e il completamento del nome del codice Objective-C.

Cocoa e Cocoa Touch sono strutture di applicazione. Ognuno è una suite di molti quadri individuali (librerie memorizzate in cartelle chiamate blahblah.quadro), come ad esempio:

  • Foundation (entrambi): generali orientati agli oggetti utilità, tra cui NSString, NSURL, NSFileManager, ecc
    • Nucleo Foundation (entrambi): Per lo più la stessa cosa, ma diverso, soprattutto ad avere un'API C-based piuttosto che Objective-C
  • Application Kit (Mac): Applicazione e finestre quadro
  • UIKit (iOS): Applicazione e finestre quadro
  • Nucleo Gr aphics (entrambi): Disegno
  • Core Animation (entrambi): Sprite-gestione e animazione quadro

(e molti, molti di più da dove sono venuti, in particolare su Mac)

Quindi:

  • è possibile utilizzare un framework, oltre cacao o Cocoa touch, ma dovrete avere qualche codice tocco Cocoa/Cocoa, a un certo livello, in modo che l'applicazione per comunicare con il sistema, ricevere gli eventi, disegnare, ecc. Quadri t in modo mirato Mac e/o iOS includeranno i wrapper rilevanti per te, a diversi livelli di qualità.
  • Puoi usare una lingua oltre all'Objective-C, ma avrai un sacco di imbarazzo sintattico, dato che la maggior parte di Cocoa e Cocoa Touch sono progettati per le caratteristiche sintattiche uniche di Objective-C (in particolare i selettori).
  • Puoi usare un editor oltre a Xcode e puoi anche usare un sistema di compilazione oltre a Xcode (come make), ma gli App Store di Apple si aspettano che le app siano costruite in un modo particolare (specialmente per quanto riguarda la firma del codice), quindi a meno non rivolgendosi agli App Store, qualsiasi altro sistema di build deve replicare ciò che Xcode fa o rischiare che i suoi utenti ricevano rifiuti.
1

Un errore chiaro non riesce a differenziare Xcode da tutto il resto. Xcode è lo strumento che stai usando per programmare - per modificare codice, codice di esecuzione, ecc. Quindi, se hai problemi con lo strumento (ad esempio, la finestra non mostra il tuo codice correttamente, o stai avendo problemi nel disegnare la tua interfaccia, ecc.), questo è un problema con Xcode.

Se non capisci perché il tuo codice non funziona, probabilmente stai avendo un problema Objective-C o un problema Cocoa. Ma tu non saprai necessariamente quale.

  • Si tratta di un problema di Objective-C se la radice del problema è che non si sa come funziona la lingua (ad esempio, non sai che cosa l'asterisco è, o che la dichiarazione non è di un'istanza, o che i messaggi a nil non vadano a mancare, ma non fare nulla).

  • È un problema di cacao se non si coglie l'architettura delegata o come funziona un controller di visualizzazione.

Ma la mia esperienza del modo in cui le persone pongono domande è che si può ignorare che di questi si ignorano. Non intendo voi personalmente, intendo tutti noi.Questo può rendere difficile porre correttamente la domanda perché non sai cosa sia esattamente quello che non sai - se lo facessi, lo sapresti e probabilmente non avresti un problema (lo faresti risolvere il problema e passare alla prossima cosa).

Problemi correlati