Avatar
omochimetaru 9/25/2018 6:55 AM
a: witness tableエントリあり、vtable親あり、vtable子あり、Catが呼ばれる b: witness tableエントリなし、vtable親あり、vtable子あり、AnimalProtocolが呼ばれる c: witness tableエントリあり、vtable親なし、vtable子なし、AnimalProtocolが呼ばれる
6:56 AM
tarunonが言ってるのはcのパターンだな。
6:57 AM
cのパターンにおいて、望み通り子で処理を差し替えたければ、 Animalにfuncを書いてaのパターンにするべきだけど、 protocol extensionをAnimal以外でも使ってるから、 funcを書きつつsuperみたいにprotocol extensionの実装を呼び出すことができないから、 それはやりたくない、と。