Eu li vários posts sobre a sintaxe do método Objective-C, mas acho que não entendo vários nomes para um método.
Estou tentando criar um método chamado getBusStops
with NSString
e NSTimeInterval
parameters e um tipo de retorno de NSMutableArray
. Foi assim que construí o método, mas ele obviamente obtém erros no tempo de execução:
- (NSMutableArray *)getBusStops:(NSString *)busStop
(NSTimeInterval *)timeInterval;
Eu vi outro exemplo com um método:
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
Não entendo por que esse método tem um nome de método para cada parâmetro. Devo fazer o mesmo com algo como:
- (NSMutableArray *)getBusStops:(NSString *)busStop
forTime:(NSTimeInterval *)timeInterval
forTime
serve?Sim; a sintaxe do método Objective-C é assim por duas razões; uma delas é para que fique claro quais são os parâmetros que você está especificando. Por exemplo, se você estiver adicionando um objeto a um
NSMutableArray
em um determinado índice, você o faria usando o método:Este método é chamado
insertObject:atIndex:
e é claro que um objeto está sendo inserido em um índice especificado.Na prática, adicionando uma string "Olá, mundo!" no índice 5 de um
NSMutableArray
chamadoarray
seria chamado da seguinte maneira:Isso também reduz a ambiguidade entre a ordem dos parâmetros do método, garantindo que você passe o parâmetro do objeto primeiro e, em seguida , o parâmetro index. Isso se torna mais útil ao usar funções que recebem um grande número de argumentos e reduz erros ao passar os argumentos.
Além disso, a convenção de nomenclatura do método é semelhante porque o Objective-C não suporta sobrecarga; no entanto, se você quiser escrever um método que faça o mesmo trabalho, mas utilize tipos de dados diferentes, isso poderá ser feito; faça, por exemplo, a
NSNumber
aula; isso possui vários métodos de criação de objetos, incluindo:+ (id)numberWithBool:(BOOL)value;
+ (id)numberWithFloat:(float)value;
+ (id)numberWithDouble:(double)value;
Em uma linguagem como C ++, você simplesmente sobrecarregaria o método number para permitir que diferentes tipos de dados fossem transmitidos como argumento; no entanto, no Objective-C, essa sintaxe permite que várias variantes diferentes da mesma função sejam implementadas, alterando o nome do método para cada variante da função.
fonte
O texto antes de cada parâmetro faz parte do nome do método. Do seu exemplo, o nome do método é realmente
Cada um: representa um argumento. Em uma chamada de método, o nome do método é dividido em: se os argumentos aparecem após o: seg
fonte
para o método create:
para chamar o método:
fonte
mim:
como em outros idiomas, usamos a seguinte sintaxe void,
add(int one, int second)
mas a maneira de atribuir argumentosOBJ_c
é diferente conforme descrito acimafonte