Sì; la sintassi del metodo Objective-C è così per un paio di ragioni; uno di questi è in modo che sia chiaro quali sono i parametri che si stanno specificando. Ad esempio, se stai aggiungendo un oggetto a un NSMutableArray
determinato indice, lo faresti usando il metodo:
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
Questo metodo viene chiamato insertObject:atIndex:
ed è chiaro che un oggetto viene inserito in un indice specificato.
In pratica, aggiungendo una stringa "Hello, World!" all'indice 5 di un NSMutableArray
chiamato array
sarebbe chiamato come segue:
NSString *obj = @"Hello, World!";
int index = 5;
[array insertObject:obj atIndex:index];
Ciò riduce anche l'ambiguità tra l'ordine dei parametri del metodo, assicurando che prima passi il parametro oggetto, quindi il parametro indice. Ciò diventa più utile quando si utilizzano funzioni che accettano un numero elevato di argomenti e riduce l'errore nel passare gli argomenti.
Inoltre, la convenzione di denominazione del metodo è tale perché Objective-C non supporta il sovraccarico; tuttavia, se si desidera scrivere un metodo che fa lo stesso lavoro, ma accetta tipi di dati diversi, è possibile farlo; prendere, ad esempio, la NSNumber
classe; questo ha diversi metodi di creazione di oggetti, tra cui:
+ (id)numberWithBool:(BOOL)value;
+ (id)numberWithFloat:(float)value;
+ (id)numberWithDouble:(double)value;
In un linguaggio come C ++, è sufficiente sovraccaricare il metodo numerico per consentire a diversi tipi di dati di essere passati come argomento; tuttavia, in Objective-C, questa sintassi consente di implementare diverse varianti della stessa funzione, modificando il nome del metodo per ciascuna variante della funzione.