Почему Objective-C не поддерживает перегрузку метода?

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

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

Ответ 1

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

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