He leído varias de las publicaciones sobre la sintaxis del método Objective-C, pero supongo que no entiendo varios nombres para un método.
Estoy tratando de crear un método llamado getBusStops
con NSString
y NSTimeInterval
parámetros y un tipo de retorno de NSMutableArray
. Así es como he construido el método, pero obviamente obtiene errores en tiempo de ejecución:
- (NSMutableArray *)getBusStops:(NSString *)busStop
(NSTimeInterval *)timeInterval;
Vi otro ejemplo con un método:
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
No entiendo por qué este método tiene un nombre de método para cada parámetro. ¿Debo hacer lo mismo con algo como:
- (NSMutableArray *)getBusStops:(NSString *)busStop
forTime:(NSTimeInterval *)timeInterval
forTime
utiliza?Si; la sintaxis del método Objective-C es así por un par de razones; uno de estos es para que quede claro cuáles son los parámetros que está especificando. Por ejemplo, si está agregando un objeto a un
NSMutableArray
índice determinado, lo haría utilizando el método:Se llama a este método
insertObject:atIndex:
y está claro que se está insertando un objeto en un índice específico.En la práctica, agregar una cadena "¡Hola, mundo!" en el índice 5 de un
NSMutableArray
llamadoarray
se llamaría de la siguiente manera:Esto también reduce la ambigüedad entre el orden de los parámetros del método, asegurando que pase el parámetro del objeto primero, luego el parámetro del índice. Esto se vuelve más útil cuando se utilizan funciones que toman una gran cantidad de argumentos y reduce el error al pasar los argumentos.
Además, la convención de nomenclatura del método es tal porque Objective-C no admite sobrecarga; sin embargo, si desea escribir un método que haga el mismo trabajo, pero tome diferentes tipos de datos, esto se puede lograr; tomar, por ejemplo, la
NSNumber
clase; esto tiene varios métodos de creación de objetos, que incluyen:+ (id)numberWithBool:(BOOL)value;
+ (id)numberWithFloat:(float)value;
+ (id)numberWithDouble:(double)value;
En un lenguaje como C ++, simplemente sobrecargaría el método numérico para permitir que se pasen diferentes tipos de datos como argumento; sin embargo, en Objective-C, esta sintaxis permite implementar varias variantes diferentes de la misma función, cambiando el nombre del método para cada variante de la función.
fuente
El texto antes de cada parámetro es parte del nombre del método. A partir de su ejemplo, el nombre del método es en realidad
Cada uno: representa un argumento. En una llamada a método, el nombre del método se divide en: sy los argumentos aparecen después de: seg
fuente
para crear método:
para llamar al método:
fuente
yo:
como en otros idiomas, utilizamos la siguiente sintaxis vacía,
add(int one, int second)
pero la forma de asignar argumentosOBJ_c
es diferente como se describió anteriormentefuente