이번에는 단순한 값 타입과 프로토콜을 이용 했을 때 동작하는 Dispatch를 알아보자
Value Type에서의 Dispatch
Value Type인 구조체, 열거형은 상속을 할 수 없다는 특징 때문에 오버라이딩이 될
가능성이 없고, 따라서 Static Dispatch 를 사용한다
Protocol에서의 Dispatch
프로토콜은 기본적으로 메서드의 선언부만 제공하기 때문에 실제 사용할 때
프로토콜 타입을 참조로만 사용할 경우 해당 인스턴스에 맞는
메서드를 호출해야하므로 Dynamic Dispatch를 사용한다.
두개의 struct가 Human 프로토콜을 채택했지만 왼쪽은 값타입인 구조체를 이용했기 때문에
Static Dispatch가 이루워지고 오른쪽은 프로토콜을 타입을 사용했고 해당 인스턴스 타입에 맞는 메서드를 확인하여 호출해줘야 하기 때문에 Dynamic Dispatch가 동작한다. 이때 참고하는 테이블이 앞에서 배운 witness table이다.
'프로그래밍언어 > swift' 카테고리의 다른 글
swift 기본 타입 (0) | 2024.10.18 |
---|---|
디스패치 학습하기 (4) [ Extension Dispatch ] (0) | 2024.08.26 |
디스패치 학습하기 (2) [ Reference Type Dispatch, final ] (0) | 2024.08.25 |
디스패치 학습하기 (1) [ 정의, 종류, vtable, witness table ] (0) | 2024.08.25 |
접근 제한자 (0) | 2024.08.25 |