-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Method Dispatch에 대하여 설명해주세요. #35
Comments
Method Dispatch는 어떤 메소드를 실행할 것인지를 결정하고 실행하는 매커니즘입니다. |
메서드 디스패치는 객체의 메서드 호출을 결정하는 방식입니다. 정적 디스패치는 객체의 메서드 호출이 컴파일 시에 결정됩니다. 주로 값 타입의 메서드가 정적 디스패치를 사용합니다. 동적 디스패치는 객체의 메서드 호출이 런타임 시에 결정됩니다. 주로 참조 타입의 메서드가 동적 디스패치를 사용합니다. 클래스는 동적 디스패치를 사용하지만 더 이상 상속이 필요없어 굳이 동적 디스패치를 사용할 일이 없다면 final 키워드를 이용해 정적 디스패치를 사용해 성능상 이점을 챙길 수 있습니다. |
Method Dispatch는 어떤 메서드가 호출되었을 때, 프로그램이 어떤 명령어(메서드)를 실행할 지 선택하는 메커니즘을 말합니다. Swift에서는 컴파일타임에 결정되는 Static Dipatch와 런타임에 결정되는 Dynamic Dispatch가 존재합니다. |
🙋🏻 답변메서드 디스패치는 프로그래밍에서 어떠한 메서드가 호출될지 결정하는 메커니즘을 의미합니다. 메서드 디스패치는 정적 디스패치와 동적 디스패치로 나눠집니다. 정적 디스패치는 컴파일 타임에 메서드 호출이 결정돼서 빠른 실행 식도를 제공합니다. 주로 구조체나 열거형과 같이 더이상 메서드의 오버라이딩 가능성이 없는 경우에 적용됩니다. 또한 클래스에 final 키워드를 통해 추가 상속 가능성을 없앤 객체에서도 사용될 수 있습니다. 동적 디스패치는 런타임에 메서드 호출을 결정하는 방식입니다. 주로 클래스나 프로토콜 메서드에서 사용됩니다. 이 둘은 메서드의 다형성이 존재하므로 런타임에 결정되는 방식을 사용합니다. 이 때 실행할 메서드를 결정하기 위해 vTable이나 witnessTable을 사용해줍니다. 또한 정적 디스패치와 다르게 추가적인 과정이 존재하기에 성능적인 오버헤드가 발생하게 됩니다. 🏷️ 키워드
|
No description provided.
The text was updated successfully, but these errors were encountered: