2012-01-07 13 views
18

que tienen un método:Primer nombre del parámetro en el objetivo c?

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

Cuando lo llamo Xcode muestra que desea:

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

¿No es posible establecer primer parámetro de alguna manera, como el segundo (longitude), ese Xcode podría mostrar como esto:

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

Es muy molesto para mí que no puedo ver el nombre del primer parámetro al llamar. ¿Es culpa mía o es imposible?

+3

Lo que usted llama un nombre de parámetro es en realidad parte del nombre del método. Esto es difícil de entender si solo conoce idiomas como Java o C++, pero el nombre del método se divide en varias partes en obj-c. El nombre de su método no es 'pan', es' pan: longitude: 'Normalmente debe intentar escribir nombres de métodos que se leen como una oración, por ejemplo' panToLatitude: andLongitude: ' – Sulthan

Respuesta

14

La forma normal de hacer lo que te pido es para declarar su método como:

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

Es decir, incluyen la etiqueta para el primer argumento con el nombre del método al principio. Lo usaría como:

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

Cambie el nombre del método, porque es imposible definir el nombre para el primer param? – Tom

+3

@Tom, los parámetros realmente no tienen nombres, pero sí, tendrá que cambiar el nombre del método. –

+0

Ok. Vengo de Java y C#, así que fue muy extraño para mí. Y definir como panLatitude es extraño ... porque no me desplazo a una latitud, sino a una latitud Y a una longitud ... – Tom

10

Simplemente debe nombrar el método de manera diferente.

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

Objective-C en realidad no tiene parámetros con nombre. El nombre del método es (en su ejemplo, no es mi versión anterior) -pan:longitude: y el lenguaje usa notación infija para pasar los argumentos.

5

Recuerde que objetivo-c se trata de enviar mensajes a objetos: el mensaje es el args. Entonces, la primera parte del mensaje a menudo contiene el verbo y la primera pieza de datos. Debería leer fácilmente.

No piense en el nombre del método como "pan". En C# y Java, el nombre del método sería Pan y los args serían longitud y latitud. Tu método debería ser algo así como.

- (void) panToLatitude:longitude: 

Esa cadena es el nombre de su función (mensaje). Piense en ello como enviar un mensaje que es un diccionario y el primer elemento contiene el verbo. Vengo del pasado de C Lang también, así que es una forma diferente de pensar.