¿Alguien puede explicarme esta sintaxis de declaración de método? En esta función, se devuelve el número de filas de un UIPickerView (UI de máquina tragamonedas en el iPhone). Según tengo entendido, el Método se llama ' pickerView
' y devuelve un NSInteger.
Pasa un puntero a la vista UIPickerview llamada ' pickerView
' ... primero, ¿por qué el método recibe el mismo nombre que el parámetro?
Luego hay un parámetro NSInteger llamado componente que nos dice para qué componente estamos contando las filas. La lógica para decidir cuál está en el cuerpo del método.
¿Qué es ' numberOfRowsInComponent
? Parece describir el valor que estamos devolviendo, pero está en el medio de los parámetros.
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
fuente
En Objective-C, el nombre de un método se compone de todas las partes de la declaración que no son argumentos y tipos. El nombre de este método sería:
El método sería equivalente a una función de estilo C que tuviera el siguiente aspecto:
editar: (con agradecimiento a Jarret Hardie ):
fuente
Además de las respuestas anteriores, me gustaría decir que los métodos Objective-C (o mensajes, si lo prefiere) tienen nombres de parámetros externos e internos .
Entonces en este caso:
numberOfRowsInComponent
es el nombre externo , el que usaría al llamar a este método desde el exterior.Y
component
es el nombre interno del parámetro, el que usa para referirse al parámetro desde el interior del método.Espero que eso lo aclare un poco.
fuente
Me parece que las firmas del método Objective-C son más como oraciones. Cada parámetro merece una parte en el nombre del método. Por ejemplo, en C podríamos tener un método ( setPersonData ) para configurar alguna información sobre la persona:
y en Objective-C el método sería más descriptivo ( setPersonName: andAge: andHeight:) , como
fuente