Advanced Swift

swift - 상속 또는 참조(reference)의 사용없이 polymorphism(다형성)을 지향 방법

studying develop 2022. 12. 20. 23:43

 

앞선 글에서 class의 사용을 지양하자 했는데, 그렇다면 swift는 struct의 사용을 지향합니다.

그런데 struct에서는 상속이 없어 다형성을 구현 못하는데, 어떻게 해야될까요?

 

바로 프로토콜을 이용하자 입니다!

 

 

영상에서 이제 질문을 한개 합니다.

d.draw()를 여러번 호출하면서 무슨 draw가 Line의 Point 중 누구의 것인지 어떻게 알 수 있을까요?

 

정답은, protocol witness table을 사용하라 합니다.

Drawable protocol에 순응하는 Point와 Line에 대한 테이블을 각각 생성합니다.

그리고 각 테이블의 draw는 실제 draw의 구현을 참조하게 됩니다.

 

즉 정리하면, struct를 통해서도 다형성을 갖게 할 수 있습니다. 바로 프로토콜을 사용해서.

다음 글에서는 프로토콜을 따르는 변수가 어떻게 메모리 상에 존재하고, 그것의 메소드를 dispatch하는지 알아보겠습니다.

 

 

 

참조.

https://developer.apple.com/videos/play/wwdc2016/416/