Кажется, я неправильно понимаю поиск во время выполнения и поиск компиляции.
во время компиляции , то, что нужно компилятору - это сигнатура метода, поэтому он ищет его по типу класса. Отправка сообщения в id означает, что компилятор должен искать все существующие методы.
во время выполнения то, что делает время выполнения, - это поиск реального адреса imp с помощью информации «что такое класс».