[Swift] Method Dispatch

2023. 12. 2. 23:20ยท๐ŸŽ Dev/Swift

 

 

 

SweepSwift iOS ๋ฉด์ ‘ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ์ž‘์„ฑํ•œ ๊น€์— iOS ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์•ฑ์˜ ๊ธฐ๋Šฅํ–ฅ์ƒ ๋ฉด์—์„œ ๊ผญ ๊ณ ๋ คํ•ด๋ด์•ผํ•œ๋‹ค๋Š” Method Dispatch์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

 

 

 

โœ”๏ธŽ Method Dispatch

Method dispatching is the process of finding the address of instructions to be executed by the CPU when a particular method is called.

 

์–ด๋–ค ์ธ์Šคํ„ด์Šค์˜ ํ˜ธ์ถœ๊ตฌ๋ฌธ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ค ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ• ์ง€ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ๋ฉ”์†Œ๋“œ ๋””์ŠคํŒจ์น˜๋ผ๊ณ  ํ•œ๋‹ค.

์–ด๋А ์‹œ์ (์ปดํŒŒ์ผํƒ€์ž„ vs ๋Ÿฐํƒ€์ž„)์— ์–ด๋–ค method๋ฅผ ์‚ฌ์šฉํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ์„œ Static Dispatch์™€ Dynamic Dispatch๋กœ ๋‚˜๋‰œ๋‹ค.

 

์‚ฌ์‹ค ์ข…๋ฅ˜๋Š” Inline Dispatch, Virtual Dispatch๋ฅผ ํฌํ•จํ•˜์—ฌ 4๊ฐ€์ง€์ธ๋ฐ, ์ฃผ๋กœ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ๊ฑด Dynamic Dispatch์™€ Static Dispatch๋‹ค. 

 

 

 

 

โœ”๏ธŽ Dynamic Dispatch

  • ๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •
  • ์ฐธ์กฐํƒ€์ž… (Class)
  • ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ ํƒ€์ž„์—์„œ ์ฐธ์กฐ๋  ์š”์†Œ์˜ ์œ„์น˜๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ฒฐ์ •๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„์—์„œ ์‹ค์ œ ์ฐธ์กฐ๋  ์š”์†Œ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค. ์ด ๊ณผ์ •์œผ๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์–ด๋–ค ์„œ๋ธŒํด๋ž˜์Šค๊ฐ€ ๋“ค์–ด์™€๋„ ์‹ค์ œ์— ๋งž๋Š” ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹คํ˜•์„ฑ ํ™œ์šฉ์— ์œ ๋ฆฌ
  • final ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ฐธ์กฐํƒ€์ž…์ธ ๊ฒฝ์šฐ ํŠน์ • ์ธ์Šคํ„ด์Šค๋ฅผ ์žฌ์ƒ์†์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์ •์  ๋””์ŠคํŒจ์น˜๋กœ ๋งŒ๋“ค์–ด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

โœ”๏ธŽ  Static Dispatch

  • ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •
  •  ๊ฐ’ํƒ€์ž…๊ณผ ์ฐธ์กฐํƒ€์ž…(class, struct ๋ชจ๋‘)์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  •  protocol๊ณผ extension์€ Static Dispatch์—์„œ ๋™์ž‘ํ•œ๋‹ค.
  • Static Dispatch๊ฐ€ Dispatch ์ข…๋ฅ˜ ์ค‘ ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅธ๋ฐ,  ๊ทธ ์ด์œ ๊ฐ€ static dispatch prohibits methods from being overridden, resulting in only one implementation of each method. ์ฆ‰, ์žฌ์ƒ์†์„ ๋ฐฉ์ง€ํ•ด์„œ์ด๋‹ค.

 

 

 

 

 

 

 

๐Ÿ“Œ  References

 

https://medium.com/@ilichev/method-dispatch-in-swift-da0d3993fc76

 

Method Dispatch in Swift

Introduction

medium.com

 

์ €์ž‘์žํ‘œ์‹œ

'๐ŸŽ Dev > Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Swift] Keychain vs UserDefaults  (0) 2023.12.17
[Swift] unowned vs weak  (2) 2023.11.14
'๐ŸŽ Dev/Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Swift] Keychain vs UserDefaults
  • [Swift] unowned vs weak
Callie_
Callie_
  • Callie_
    CalliOS
    Callie_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • ๐ŸŽ APPLE
      • ๐ŸŽ Dev
        • Swift
        • UIKit
        • SwiftUI
        • Issue
        • ๊ตฌํ˜„
      • ๐ŸŽ Design
        • HIG
      • โš™๏ธ CS
      • ๐Ÿ’ก ์•Œ๊ณ ๋ฆฌ์ฆ˜
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
        • ๋ฐฑ์ค€
      • ๐ŸŸ๏ธ ์ง๊ด€๋กœ๊ทธ (์ถœ์‹œ์•ฑ)
        • ์—…๋ฐ์ดํŠธ
      • ๐ŸŒฑ SeSAC iOS 3๊ธฐ
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    layer.shadow
    TapGestureRecognizer
    Enum
    Infoํƒญ
    clipsToBound
    CocoaTouchFramework
    ํ™”๋ฉด์ „ํ™˜
    DiffableDataSource
    cornerradius
    .OverFullScreen
    IBOutlet
    DidEndOnExit
    ๋„คํŠธ์›Œํฌํ†ต์‹ 
    ios
    ์ƒ๋ช…์ฃผ๊ธฐ
    assets
    diffable
    IBAction
    apply
    modalPresentStyle
    Swift
    .fullScreen
    Entry Point
    SwiftUI
    stroyboard
    Snapshot
    CustomView
    addTarget
    TableViewCell
    SeSAC
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Callie_
[Swift] Method Dispatch
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”