공부의 발단..

KVO(key-value observing)에 대해서 공부를 하다가, dispatch에 관한 이야기가 나와서, 해당 부분에 대해서 난생처음 본 부분이라 공부하게 되었다.


컴파일과 런타임

가장 먼저 컴파일과 런타임에 대한 이해가 있어야 한다.

Dispatch

Dispatch란 오버라이드 된 메서드가 존재할때,

어떤 메서드를 호출할 것인지를 결정하여, 그것을 실행하는 메커니즘이다

Swift에선 Static Dispatch와 Dynamic Dispatch 두 가지 방식이 있다

Static Dispatch

static dispatch는 “컴파일” 타임에 어떤 메소드를 호출할지를 정하는 방법이다.

컴파일 시점에서 정하기 때문에 성능상 이점을 가지게 된다.

주로 값 타입에서 사용하게 되는데, 그말은 struct혹은 enum에서 사용하게 된다.

그런데, 에초에 struct와 enum은 상속이 불가능 하니까 당연하게도 오버라이딩이 없다.

Dynamic Dispatch