だいたいその辺の、実行時解決を実現したかったという理由だと思うけど、
ランタイムがメソッド呼び出しするときの動作は

1.レシーバがnilかどうか
2.レシーバのメソッドリストに該当メソッドがあるか
3.なければスーパークラスにあるか
4.なければthrow exception

だよね。
だからメソッド呼ぶときはランタイムにレシーバとselectorを渡して調べてもらう必要が有るんですよ。