Эксперты C, насколько я понимаю, Objective-C - это язык динамической привязки, который не позволяет перегружать какой-либо метод в классе.
Но меня раздражает одна вещь, если я пишу два метода с одинаковым именем, но с разным количеством списков параметров, например:
// Which is not allowed in objective-c
-(void)updateValue:(int)intVal{
}
-(void)updateValue:(float)floatVal{
}
Но второй случай, который позволяет Objective-C:
// Allowed in Objective-C
-(void)updateValue:(int)intVal{
}
-(void)updateValue:(float)floatVal :(int)intVal{
}
Хотя оба случая являются перегрузкой метода.
Теперь мой вопрос, почему разрешен второй случай.
Изменяет ли метод с двумя параметрами во втором случае имя метода? или что-то другое ?
Пожалуйста, объясните.
-(void)updateValue:(float)floatVal :(int)intVal
. Хотя бы напишите-(void)updateValue:(float)floatVal andSomething:(int)intVal
. В противном случае сигнатурой являются-updateValue:
,-updateValue::
(если нет введения параметра) и-updateValue:andSomething:
. - person Larme   schedule 27.09.2017