Domanda

Beh, ho iniziato con la programmazione iPod / iPhone utilizzando Head First iPhone Development (O'Reilly) e sto scrivendo il codice dal libro. Ci sono due problemi, uno è programmazione relativa e l'altra no.

  • Non capisco il formato di metodi Objective-C. Ricevo un paio di errori ora, basato sul codice sorgente dal libro. Che conduce me per il mio prossimo numero.

  • Parte del codice è bacato. Penso di sì, perché non ho potuto ottenere il codice da eseguire senza modificarlo. Il libro ha alcuni errori di battitura nel testo dal momento che è una prima edizione e quant'altro, ma potrebbe il mio "fissare" il codice hanno a che fare con esso?

... Dove posso saperne di più su metodi Objective-C e il modo in cui lavorare in termini di struttura e dove il tipo di ritorno e gli argomenti vanno?

Per quelli con il libro, io sono in mezzo dell'app InstaTweet verso l'inizio.

Grazie.

È stato utile?

Soluzione

Forse un confronto tra un linguaggio "C-like" e obj-c sarebbe utile - andiamo con Java. Immaginate una classe Rectangle con un metodo setBackgroundColor. Si suppone che abbiamo un'istanza di Rectangle chiamato rett.

In Java, la firma del metodo sarebbe probabilmente

public void setBackgroundColor(int r, int g, int b) { ... }

In Objective-C, gli argomenti sono parte della firma del metodo, quindi potrebbe essere

- (void)setBackgroundColorWithRed:(int)r green:(int)g blue:(int)b;

Il "-" significa che è un metodo di istanza sulla classe Rectangle. (Void) è tipo di ritorno del metodo. Poi vengono gli argomenti. Ogni colon definisce un argomento, che viene digitato (ogni argomento è (int) in questo esempio).

Mettiamo a confronto si chiamano questi metodi. Java:

rect.setBackgroundColor(255, 255, 0);

Obj-C:

[rect setBackgroundColorWithRed:255 green:255 blue:0];

Un sacco di gente inciampa sulla sintassi di obj-c - non siete soli. Speriamo che questo confronto renderà le cose più chiare. Essa esemplifica anche una forza linguistica di Objective-C: al momento della chiamata, è chiaro che cosa i vostri argomenti sono. Se fossi lettura del codice e ho visto il metodo Java chiamato, non sarebbe evidente che gli argomenti sono di colore rosso, blu e verde. In obj-c, è dolorosamente chiaro che stiamo impostando valori di colore individuali. Certo, la maggior parte degli sviluppatori possono indovinare quali sono i tre argomenti di un metodo setColor sono, ma i metodi più complessi diventare confuso. Ecco un metodo più complesso definito in Java e Objective-C:

static Dog createDog(  String name
                     , int age
                     , boolean isNeutered
                     , String ownerName
                    );
+ (Dog *)createDogNamed:(NSString *)name 
     age:     (int)        age 
     neutered:(BOOL)       isNeutered 
     owner:   (NSString *) owner;

Al momento della chiamata:

Dog.createDog("Fluffy", 2, true, "Moshe");
[Dog createDogNamed:@"Fluffy" age:2 neutered:YES owner:@"Moshe"];

Objective-C è più prolisso, ma molto più leggibile. Nell'esempio di Java, non è davvero chiaro cosa significano i "2" e gli argomenti "veri". Objective-C quasi si legge come inglese.

Altre persone hanno inviato i collegamenti a più guide in profondità, ma spero che questo si ottiene oltre i ostacoli sintattiche abbastanza per fare i link utili. Sono felice di rispondere a domande più specifiche che avete. Nella mia esperienza, obj-c newbies avere un momento davvero difficile con la sintassi, e quindi su s e si sente brillante. Appendere in là!

Altri suggerimenti

La definizione di un metodo di Objective-C è abbastanza semplice. E 'piuttosto simile ad una definizione normale funzione di chiamata C, in realtà. La grande novità è la possibilità di nominare i parametri. Ecco un esempio:

-(int)addX:(int)x toY:(int)y
{
    return x + y;
}

che può essere utilizzato con l'invio di un messaggio con l'oggetto appropriato:

int z = [object addX:x toY:y];

In questo caso ho dato i parametri e gli argomenti gli stessi nomi, per far capire come le cose si allineano. Si potrebbe facilmente fare:

int z = [object addX:4 toY:7];

E dopo che, z sarà 11.

Introduzione di Apple per Objective C .

Il formato metodo di base è

-(ReturnType *)methodName:(VariableType *)variableName{

}

Ad esempio:

-(NSString *)giveMeANewStringFromAnOldString:(NSString *)oldString{

}

Si dovrebbe anche controllare il sito web del libro per l'errata.

Ho fatto la stessa cosa che hai fatto. Ho preso il libro Head First iPhone Development troppo (che copre 3.1 SDK).

Ho eseguito attraverso tutti i tutorial in esso e si trova solo 1 errore che ha causato la mia applicazione per non funziona (ho fatto una nota di esso nel mio libro, ma non riesco a trovare ora ...).

Così, dopo che mi sono reso conto che ho avuto esattamente lo stesso problema si stanno avendo con la sintassi.

ho preso "Programming in Objective-C 2.0" di Stephen G. Kochan. (E 'semplicemente geniale.) Il libro è chiaro e conciso. Non ho nemmeno rendono fino al 25% del libro e tutte le mie domande hanno risposto.

La lettura del codice Objective-C mi ha buttato per mesi perché sono così abituato a una sintassi diversa che il mio cervello ha preso un po 'di tempo per adattarsi al modo in Objective-C si aspetta.

Quello che sto trovando è il codice Objective-C diventa veramente leggibile una volta che si avvolgono il cervello intorno ad esso. esempio di Carl Norum sopra è una grande dimostrazione di leggibilità.

[object addX:4 toY:7];

Non ottiene molto più leggibile di quello!

Anche alcuni terminologia è un po 'diverso. "Messaggi di un oggetto" vs "chiamando un metodo" mi ha buttato per un paio di settimane anche.

Spero che la raccomandazione libro che aiuta, in realtà mi ha aiutato molto.

Ci sono alcune grandi risorse di apprendimento da parte di Apple:

Learning Objective-C: A Primer

e

Linee guida per Cocoa

Buona fortuna!

cacao (R) di programmazione per Mac (R) OS X (3rd Edition) , è la bibbia per Mac e cacao.

Non ho avuto problemi con esso, ma di tenere presente che API sono sempre in movimento in avanti così ci potrebbe essere aggiornamenti lievi / modifiche. Ma non ho trovato nulla che mi avrebbe impedito di finire tutti gli esempi di codice ed esercizi.

Questo è il libro da leggere.

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