Дэвид прав в том, что перегрузка метода не поддерживается в Objective-C.Это похоже на PHP в этом смысле.Как он также указывает, обычной практикой является определение двух или более методов с разными сигнатурами в манере, которую он приводит.Однако также возможно создать один метод, используя тип «id».Через тип «id» вы можете отправить любой объект (и любые примитивы, использующие класс NSNumber) в метод, а затем из самого метода вы можете проверить его тип и при необходимости вызвать соответствующее исключение.Хотя это имеет незначительное снижение производительности, оно, скорее всего, будет номинальным или незначительным, если вы не обрабатываете большие объемы данных.
- (void) writeToFile: (NSString *)path fromObject: (id)object {
if (!([object isKindOfClass: [NSNumber class]] || [object isKindOfClass: [NSString class]])) {
@throw [NSException exceptionWithName: @"InvalidArgumentException" reason: @"Unrecognized parameter type." userInfo: nil];
}
}
Это также прекрасное место для реализации протокола для принудительного применения типа объекта, что можно сделать так:
(id<MyProtocol>)object