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:
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
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
chamado array
seria chamado da seguinte maneira:
NSString *obj = @"Hello, World!";
int index = 5;
[array insertObject:obj atIndex:index];
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.