Да; синтаксис метода Objective C подобен этому по нескольким причинам; один из них заключается в том, чтобы было ясно, какие параметры вы указываете. Например, если вы добавляете объект NSMutableArray
в определенный индекс, вы должны сделать это с помощью метода:
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
Этот метод называется insertObject:atIndex:
и становится ясно, что объект вставляется по указанному индексу.
На практике добавляем строку "Hello, World!" по индексу 5 NSMutableArray
вызываемого array
будет вызываться следующим образом:
NSString *obj = @"Hello, World!";
int index = 5;
[array insertObject:obj atIndex:index];
Это также уменьшает неоднозначность между порядком параметров метода, гарантируя, что вы сначала передадите параметр объекта, а затем параметр индекса. Это становится более полезным при использовании функций, которые принимают большое количество аргументов, и уменьшает ошибку при передаче аргументов.
Кроме того, соглашение об именовании методов таково, потому что Objective-C не поддерживает перегрузку; однако, если вы хотите написать метод, который выполняет ту же работу, но принимает разные типы данных, это можно сделать; возьмите, например, NSNumber
класс; у этого есть несколько методов создания объекта, включая:
+ (id)numberWithBool:(BOOL)value;
+ (id)numberWithFloat:(float)value;
+ (id)numberWithDouble:(double)value;
В таком языке, как C ++, вы просто перегружаете числовой метод, чтобы разрешить передачу разных типов данных в качестве аргумента; однако в Objective-C этот синтаксис позволяет реализовать несколько различных вариантов одной и той же функции, изменяя имя метода для каждого варианта функции.