Domanda

Essendo uno sviluppatore PHP piuttosto esperto e avendo una discreta conoscenza di C (ha scritto un esperimento di calcolo distribuito con 16 dei microcontrollori NEC di mio padre), mi piacerebbe passare a Objective-C e Cocoa, con l'obiettivo finale di integrare le app per Mac / iPhone con alcuni dei miei progetti PHP.

Scorrendo la "programmazione Cocoa per Mac OS X" libro di Arron Hiilegass, mi sento un po 'frustrato. Sono in grado di lavorare sugli esempi, ma non spiega esattamente perché sta usando una classe in quel modo (NSNumber invece di int o double per esempio).

Sto cercando un buon / i libro / i per appoggiare prima Objective-C. La mia domanda è: quale sarebbe un buon libro? Sto guardando " Programmazione in Objective-C 2.0 " e sembra abbastanza decente. Dove andrei da lì? Sto pensando che dovrei ricominciare sul mio libro Cocoa.

Inoltre, ci sono risorse su Internet che potrebbero aiutare nella transizione da PHP a Objective-C? So che PHP è un linguaggio di scripting tipicamente diffuso, quindi ha le sue differenze. Ci sono alcune cose che non hanno senso con Obj-C e Cocoa, perché non posso inserire numeri interi in un NSMutableArray?

In ogni modo. Grazie per l'aiuto! (Ho solo 14 anni, quindi andate piano con me se ho fatto degli errori nel mio Q.)

È stato utile?

Soluzione

Ho appena esaminato " Programmazione in Objective-C 2.0 " me stesso ed è abbastanza buono. Lo consiglierei, soprattutto se non hai mai usato C (o se l'hai dimenticato, come me).

Tuttavia, Apple ha davvero un'ottima documentazione. Se non ti dispiace leggere online, inizierei con il loro Introduzione a Cocoa .

Altri suggerimenti

Sono in grado di lavorare sugli esempi, ma non spiega esattamente perché sta usando una classe in quel modo (NSNumber invece di int o double per esempio) ...

Ci sono alcune cose che non hanno senso con Obj-C e Cocoa, perché non posso inserire numeri interi in un NSMutableArray?

NSNumber è un tipo molto più utile di un tipo primitivo come int o double , poiché viene spesso utilizzato insieme ad altri oggetti ti imbatterai mentre programmi in Cocoa.

Ad esempio, al fine di impacchettare un numero come valore in un array ridimensionabile (come un NSMutableArray ) o un array associativo (un'istanza di NSDictionary ), devi trasformare il numero primitivo ( int , double , ecc.) in serializzabile o oggetto archiviabile - un NSNumber .

Le primitive non possono essere serializzate, diversamente da un NSNumber , perché le primitive non sono nel set base di " Core Foundation " tipi ( NSNumber , NSArray , NSString , ecc.) che Apple ha lavorato sodo per renderti disponibile.

Inoltre, usando NSNumber ottieni anche molti metodi di bonus gratuiti: puoi ad esempio convertire rapidamente il numero in una stringa, ad esempio digitando [myNumber stringValue] .

Oppure, se stai trattando il tuo NSNumber come il prezzo di qualcosa (" $ 1,23 "), puoi applicare un NSNumberFormatter to assicurati che le operazioni sul numero forniscano risultati nel formato che ti aspetteresti (ad esempio, se aggiungi due valori di prezzo, ti aspetteresti di ottenere un valore in cambio in cambio).

Questo non vuol dire che non puoi o non dovresti usare le variabili int o double . Ma in molti casi, troverai un NSNumber è un'opzione migliore, in quanto puoi scrivere meno codice e ottenere molte funzionalità per " gratuito " ;.

Nella mia esperienza, ho trovato i documenti di Internet per essere abbastanza utili nell'apprendimento di Obj-C e CocoaTouch. La mia progressione è andata in questo modo:

1) Guarda i video di Apple Dev su iTunes (sono gratuiti).

2) Leggi Guida introduttiva , Guida alla programmazione dell'applicazione iPhone .

3) Leggi OOP in Obj -C.

4) Ulteriori informazioni: Cocoa Fondamenti , Objective-C Primer , Cocoa Practices .

5) Fai dei semplici tutorial.

IMO: tutte le informazioni di cui hai bisogno sono sul sito Apple Dev: iPhone. Risparmia e non comprare libri. Se non capisci " PERCHÉ " qualcosa viene fatto in una delle guide o tutorial, incrociarlo immediatamente con altre fonti di Google.

Devi tenere presente che la curva di apprendimento qui è piuttosto grande. Era per me e sto studiando cose del genere ogni giorno al college. Quindi, seguitelo e leggete in modo intelligente (scremate cose che sapete). Quello che vedo in me stesso è se capisco come funziona l'iPhone e conosco il flusso di dati, quindi programmare per questo è principalmente un problema di sintassi.

PHP è molto diverso da Objective-C. Inoltre, il modo in cui i problemi di programmazione vengono risolti in PHP nel contesto di Internet è molto diverso dal modo in cui i problemi di programmazione vengono risolti in Obj-C, nel contesto di iPhone. Per questo motivo, vuoi avvicinarti all'iPhone da una nuova prospettiva e come studente / studente. Prenditi il ??tuo tempo e concentrati sulla programmazione orientata agli oggetti e sulle migliori pratiche. Questo ti benedirà per gli anni a venire.

-Buffalo

Inoltre, per rispondere alle tue domande:

Objective-C è un linguaggio orientato agli oggetti costruito come estensione sopra C.

In quanto tale fornisce sia tipi primitivi (come int e double) che oggetti.

NSNumber è una classe Objective-C che rappresenta un numero PIÙ un numero di operazioni su quel numero (metodi). Il vantaggio di usare un NSNumber su un tipo primitivo numerico è che può essere usato in modo orientato agli oggetti (puoi inviargli messaggi, puoi estenderne la funzionalità con "protocolli", puoi ereditarne, puoi passalo in un metodo che prevede un oggetto ecc.).

Come per NSMutableArray, questa è una classe che fornisce funzionalità simili a array. È progettato per funzionare con tipi di oggetto Objective-C (è un contenitore di oggetti di tipo NSObject e oggetti che ereditano da essi) e questo è il motivo per cui non può contenere un numero intero. Può, tuttavia, contenere un NSInteger che è una classe C-obiettivo che rappresenta un numero intero.

Proverei personalmente a imparare per prima cosa Objective-C dai riferimenti Apple su http: // developer.apple.com/library/mac/navigation/ e proseguendo con il cacao da lì.

Ero su una barca simile (PHP si spostava su Objective-C) e ho scoperto che il processo migliore era saltare in un progetto. Ho anche sfogliato il libro di Hillegass ed è stato un buon inizio, ma l'unico modo per conoscere una lingua è confondersi con un obiettivo chiaro.

È doloroso ma funziona. Caffè, API e Kleenex.

EDIT: ho appena letto l'ultima parte del tuo post e ho visto che avevi 14 anni. Forse cambi il caffè con Coca-Cola :)

Il mio tutorial preferito di Objective-C se vieni da qualsiasi parte è il corso iTunesU di Stanford sulla programmazione iOS. Il professore mette davvero le cose in prospettiva rispetto agli altri libri e ai tutorial online.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top