본문 바로가기
FRONT-END/iOS

Swift Method Dispatch

by 랄라J 2023. 8. 1.

클래스와 프로토콜의 메서드가 실행되는 방식에 대한 이해

 

스위프트가 함수를 실행시키는 방법

  • 컴파일 타임 : 소스코드가 기계어코드로 변환되는 시점
    • Direct Dispatch | Static Dispatch
      • 컴파일 시점에 코드 자체에 함수의 메모리 주소 삽입 또는 함수의 명령 코드를 해당 위치에 코드를 심음
      • 가장 빠름 (0.0 - 2.13ns)
      • 밸류 타입(구조체/열거형)에 사용
      • 상속과 다형성의 장점을 누릴 수 없음
  • 런타임 : 사용자에 의해 앱이 실행되는 시점
    • Table Dispatch | Dynamic Dispatch
      • 함수의 포인터를 배열 형태로 보관 후 실행
      • 중간 (3.23ns)
      • 클래스, 프로토콜 테이블에서 사용
        • Witness Table : 프로토콜 테이블
        • Virtual Table : 클래스 테이블
    • Message Dispatch
      • 주로 Objective-C 클래스에서 사용되던 방법, Objective-C 런타임에 의존
      • 재정의하지 않은 경우 별도로 저장하지 않고 상위 클래스 상속구조를 모두 훑은 뒤 실행할 메서드를 결정
      • 가장 느림 (5.82ns)
728x90

'FRONT-END > iOS' 카테고리의 다른 글

Swift의 self vs Self 이해하기  (0) 2023.08.02
Swift 중첩 타입 (Nested Types)  (0) 2023.08.02
Swift 프로토콜(Protocols)  (0) 2023.08.01
Swift 확장(Extensions)  (0) 2023.08.01
Swift 타입캐스팅(Type Casting)  (0) 2023.07.31

댓글