Method Dispatch는 프로그램이 어떻게 해당 메소드를 실행할지 정하는 것이다.
Method Dispatch에는 Direct(Static 이라고 부르기도 한다.) / Dynamic 방식이 있으며, Dynamic Dispatch 방식에는 Table Dispatch / Message Dispatch 방식이 있다.
해당 Dispatch는 swift에만 있는 것이 아니라 모든언어에 있다. swift가 컴파일되고 해당 메소드르 부르는 방식에는 Direct, Table, Message 총 3가지가 있다고 보며 된다.
많은 언어들이 Direct나 Table Dispatch를 지원한다. Java는 Table dispatch를 기본적으로 사용한다. c++는 기본적으로 Direct dispatch를 이용한다. 하지만 virtual 키워드를 이용하여 table dispatch를 이용할 수 있다. Obj-C는 항상 Message Dispatch를 이용한다. 하지만 기본적으로 C처럼 Direct dispatch를 이용할수 있으며, Swift는 이 3가지를 다 지원한다. 이걸로인해 swift 개발자들에게 많은 혼란을 준다.
설명을 쓰고 싶지만, 아래 링크 2개로 해결이 될 것이라고 본다.
이해가 안되거나 궁금한 점은 댓글로 남겨주시면 답변드리도록 하겠습니다.
direct dispatch - direct of assem
table dispatch - override
message dispatch - runtime
https://www.rightpoint.com/rplabs/switch-method-dispatch-table
https://medium.com/@santu.chakraborty2009/method-dispatch-in-swift-47f4cc67ce9b
'Mobile App > iOS' 카테고리의 다른 글
iOS 정규식 에서 조심해야하는 거 (0) | 2020.03.14 |
---|---|
iOS - UI test 한번에 하기 (0) | 2019.11.24 |
iOS 메모리 관리 방법 memory graph view (0) | 2019.03.19 |
Swift 4 - CustomView (메모리 누수 해결하기.) (0) | 2019.03.09 |
스토리 보드 분리할 경우 생기는 오류 해결 방법(iMessage) (0) | 2019.03.09 |