Да; синтаксис метода 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 этот синтаксис позволяет реализовать несколько различных вариантов одной и той же функции путем изменения имени метода для каждого варианта функции.
person
Alex Rozanski
schedule
06.04.2009