안녕하세요,
https://developer.apple.com/videos/play/wwdc2016/416/?time=1454
해당 세션을 공부하면서 궁금증이 남는게 있었습니다. 궁금한점들을 많이찾아보았으나 명확한 답을 찾지 못했습니다.
세션을 보면서 아무래도 제 생각에는 각 타입들은 XXX.Type이라는 구현한메소드정보들을 담는 것이 static memory에 생성될 것 같습니다.
그리고 protocol을 채택하는 타입들은 각 타입마다 protocol witness table이 만들어진다고 합니다.
제가 궁금한점은 Something이라는 타입이 protocol을 채택하여 구현한 메소드의 경우, 타입 자체 (Something.Type)에도 그정보가 저장이되는지,
아니면 protocol witness table에만 저장이되는지 궁금합니다.
그래서 아래와같이 코드를 작성했을때,
변수가 struct 타입이면서, struct 인스턴스를 받는경우에,
protocol을 채택하여 구현한 메소드를 호출하고자할 때,
컴파일러는 Struct.Type에 저장된 foo() 메소드를 찾아서 호출할까요, 아니면 StructAProtocolWitnessTable에서 foo()메소드를 호출하나요?