디스패치 학습하기 (3) [ Value Type Dispatch, Protocol Dispatch ]

2024. 8. 25. 23:40·Programing Langauge/swift
반응형

 

이번에는 단순한 값 타입과 프로토콜을 이용 했을 때 동작하는 Dispatch를 알아보자

 

Value Type에서의 Dispatch

Value Type인 구조체, 열거형은 상속을 할 수 없다는 특징 때문에 오버라이딩이 될
가능성이 없고, 따라서 Static Dispatch 를 사용한다

 


Protocol에서의 Dispatch

프로토콜은 기본적으로 메서드의 선언부만 제공하기 때문에 실제 사용할 때
프로토콜 타입을 참조로만 사용할 경우 해당 인스턴스에 맞는
메서드를 호출해야하므로 Dynamic Dispatch를 사용한다.

 

 

두개의 struct가 Human 프로토콜을 채택했지만 왼쪽은 값타입인 구조체를 이용했기 때문에
Static Dispatch가 이루워지고 오른쪽은 프로토콜을 타입을 사용했고 해당 인스턴스 타입에 맞는 메서드를 확인하여 호출해줘야 하기 때문에 Dynamic Dispatch가 동작한다. 이때 참고하는 테이블이 앞에서 배운 witness table이다.

반응형

'Programing Langauge > 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
접근 제한자  (2) 2024.08.25
'Programing Langauge/swift' 카테고리의 다른 글
  • swift 기본 타입
  • 디스패치 학습하기 (4) [ Extension Dispatch ]
  • 디스패치 학습하기 (2) [ Reference Type Dispatch, final ]
  • 디스패치 학습하기 (1) [ 정의, 종류, vtable, witness table ]
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (338) N
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (41)
        • swift (34)
        • python (6)
        • Kotlin (1)
      • iOS (134)
        • UIKit (37)
        • Combine (1)
        • SwiftUI (34)
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (21)
        • 어노테이션 (6)
        • 튜토리얼 (14)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (20) N
        • 이론 (10)
        • MCP (1)
        • LangGraph (9) N
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    AVFoundation
    dp
    dfs
    protocol
    UIKit
    dispatch
    CS
    Spring
    투포인터
    property
    Tuist
    SwiftUI
    boostcamp
    concurrency
    lifecycle
    Swift
    백준
    IOS
    프로그래머스
    GIT
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
디스패치 학습하기 (3) [ Value Type Dispatch, Protocol Dispatch ]
상단으로

티스토리툴바