2012-01-07 20 views
18

Ho un metodo:Nome del primo parametro nell'obiettivo c?

- (void)pan:(double)lat longitude: (double) lon{...}

Quando io chiamo Xcode mostra come questo:

[self pan:(double) longitude:(double)]

non è possibile impostare primo parametro in qualche modo, come il secondo (longitude), che Xcode potrebbe mostrare come questo:

[self pan: latitude:(double) longitude:(double)]

E 'molto fastidioso per me che non riesco a vedere il nome del primo parametro quando si chiama. È colpa mia o è impossibile?

+3

Quello che si chiama il nome di un parametro è in realtà parte del nome del metodo. Questo è difficile da capire se si conoscono solo linguaggi come Java o C++, ma il nome del metodo è in realtà diviso in più parti in obj-c. Il nome del tuo metodo non è 'pan', è' pan: longitude: 'In genere dovresti provare a scrivere nomi di metodi che leggono come una frase, ad esempio' panToLatitude: andLongitude: ' – Sulthan

risposta

14

Il modo normale di fare quello che stai chiedendo è quello di dichiarare il vostro metodo come:

-(void)panLatitude:(double)lat longitude:(double)lon; 

Cioè, includono l'etichetta per il primo argomento con il nome del metodo all'inizio. Lo useresti come:

[self panLatitude:x longitude:y]; 
+2

Quindi cambia nome del metodo, perché è impossibile definire il nome per il primo param? – Tom

+3

@Tom, i parametri non hanno realmente nomi, ma sì, è necessario modificare il nome del metodo. –

+0

Ok. Vengo da java e C# quindi è stato molto strano per me. E definire come panLatitude è strano ... perché non eseguo il pan a latitudine, ma a latitudine E longitudine ... – Tom

10

Hai solo bisogno di nominare il metodo in modo diverso.

- (void)panToLatitude: (double)lat longitude: (double)lon; 

Objective-C in realtà non ha parametri con nome. Il nome del metodo è (nel tuo esempio, non la mia versione precedente) -pan:longitude: e la lingua usa la notazione infix per passare gli argomenti.

5

Ricordare che obiettivo-c riguarda l'invio di messaggi agli oggetti - il messaggio è l'argomento. Quindi la prima parte del messaggio contiene spesso il verbo e il primo pezzo di dati. Dovrebbe leggere facilmente.

Non pensare al nome del metodo come "pan". In C# e Java il nome del metodo sarebbe Pan e gli argomenti sarebbero longitudine e latitudine. Il tuo metodo dovrebbe essere qualcosa di simile.

- (void) panToLatitude:longitude: 

Quella stringa è il nome della funzione (messaggio). Pensala come se inviassi un messaggio che è un dizionario e il primo elemento contiene il verbo. Vengo anch'io dallo sfondo di Cang, quindi è un modo di pensare diverso.

Problemi correlati