objective c - superponer - ¿Cómo paso múltiples parámetros en Objective-C?
superponer graficas en r (6)
Debe delimitar cada nombre de parámetro con un ":" como mínimo. Técnicamente, el nombre es opcional, pero se recomienda para su legibilidad. Entonces podrías escribir:
- (NSMutableArray*)getBusStops:(NSString*)busStop :(NSSTimeInterval*)timeInterval;
o lo que sugeriste:
- (NSMutableArray*)getBusStops:(NSString*)busStop forTime:(NSSTimeInterval*)timeInterval;
He leído varios artículos sobre la sintaxis del método Objective-C, pero supongo que no entiendo varios nombres para un método.
Estoy intentando crear un método llamado getBusStops
con parámetros NSString
y NSTimeInterval
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. Debería hacer lo mismo con algo como:
- (NSMutableArray *)getBusStops:(NSString *)busStop
forTime:(NSTimeInterval *)timeInterval
El texto antes de cada parámetro es parte del nombre del método. De su ejemplo, el nombre del método es en realidad
-getBusStops:forTime:
Cada: representa un argumento. En una llamada a método, el nombre del método se divide en: s y los argumentos aparecen después de: seg
[getBusStops: arg1 forTime: arg2]
Objective-C no tiene parámetros con nombre, por lo que todo en el lado izquierdo de dos puntos es parte del nombre del método. Por ejemplo,
getBusStops: forTime:
es el nombre del método. El nombre está dividido por lo que puede ser más descriptivo. Simplemente puedes nombrar tu método
getBusStops: :
pero eso no dice mucho sobre el segundo parámetro.
Sí; 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
en un índice determinado, lo haría utilizando el método:
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
Este método se llama insertObject:atIndex:
y está claro que un objeto se está insertando en un índice especificado.
En la práctica, agregando una cadena "Hello, World!" en el índice 5 de una NSMutableArray
llamada NSMutableArray
se llamaría de la siguiente manera:
NSString *obj = @"Hello, World!";
int index = 5;
[array insertObject:obj atIndex:index];
Esto también reduce la ambigüedad entre el orden de los parámetros del método, asegurándose de pasar primero el parámetro del objeto y luego el parámetro del índice. Esto se vuelve más útil cuando se usan funciones que toman una gran cantidad de argumentos y reduce el error al pasar los argumentos.
Además, la convención de denominación de métodos es tal porque Objective-C no admite sobrecarga; sin embargo, si desea escribir un método que realiza el mismo trabajo pero toma diferentes tipos de datos, esto puede lograrse; tomar, por ejemplo, la clase NSNumber
; 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 el paso de 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.
para crear el método:
-(void)mymethods:(NSString *)aCont withsecond:(NSString *)a-second {
//method definition...
}
para llamar al método:
[mymethods:self.contoCorrente withsecond:self.asecond];
(int) add: (int) numberOne plus: (int) numberTwo ;
(returnType) functionPrimaryName : (returnTypeOfArgumentOne) argumentName functionSecondaryNa
yo:
(returnTypeOfSecontArgument) secondArgumentName ;
como en otros idiomas usamos la siguiente sintaxis void add(int one, int second)
pero la forma de asignar argumentos en OBJ_c
es diferente como se describió anteriormente