Почему Objective-C не поддерживает перегрузку методов? - PullRequest
11 голосов
/ 15 декабря 2010

Objective-C не поддерживает перегрузку методов.
Почему?
Это выполнимо, но Apple решила не реализовывать это?или это не выполнимо из-за динамической природы Objective-C?

У меня сложилось впечатление, что перегрузка методов может быть выполнена на скомпилированных языках (Java, C #) и не может быть выполнена на интерпретируемых языках (Ruby, Python).
Содержит ли это некоторое значение?

1 Ответ

26 голосов
/ 15 декабря 2010

Здесь уместно различие не между компилируемыми и интерпретируемыми языками, а между статически типизированным (Java, C #) и динамически типизированным (Ruby, Python, Objective-C).В динамически типизированном языке информация о типах очень часто не известна до времени выполнения.Во время выполнения все объекты статически типизируются как id в Objective-C.

Кроме того, основная идея в динамически типизированных языках ОО состоит в том, что вам не нужно заботиться о том, какой тип объекта, пока он отвечает насообщения, которые вы хотите отправить.Таким образом, перегрузка, основанная на типе, вылетит прямо перед лицом этого.

...