70: Swift Runtime 之 Method Dispatch—Static, Table, or Message

weak self podcast

線上收聽與節目筆記

波肥來介紹 Swift 的 method dispatch。

👋開場

⏪上集節目回顧

聽眾 dan12411 貢獻他的 Xcode 技巧。

📰一週開發者新聞

⭐️Swift Runtime 1—Method Dispatch in Swift/ObjC: Static, Table, Message Dispatch

  • struct 的 func 一定是 static dispatch。因為 optimization 設定的不同,有可能會是 inline
  • class 的 func 通常是 table dispatch。如果加了 final 或是在 extension 定義新 func 就會是 static。
  • Swift 裡的NSObject subclass,一般 func 也是 table dispatch,即使加了 @objc 也一樣。若是 @objc dynamic 就會是 message dispatch。如果加了 final 就會是 static
  • 想要自行研究的話,可以用以下方法:
// Foo.swift
struct Foo {
    func bar() {
        print("struct bar")
    }
}

class FooClass {
    func bar() {
        print("class bar")
    }
}

let fs = Foo()
fs.bar()

let fc = FooClass()
fc.bar()
  • 再用 swiftc -emit-silgen Foo.swift -Onone 即可得到 SIL

💸勸敗話題

👋收尾

更多 weak self


weak self podcast logo

weak self podcast

集結弱弱的我,也可以組成強大的社群。在 iOS 開發圈打滾的台灣工程師,專為 Apple & iOS 開發者而製作的 Podcast。主持人一三波肥。內容涵蓋了 iOS 與 Apple 開發圈的新知討論、踩坑經驗、人物採訪、社群活動、職場生活。

回首頁聽眾朋友怎麼說?weak self 歷史

線上收聽

可使用 OvercastListen NotesGoogle Podcasts 網站。

訂閱方式

weak self 支援任何 podcast 播放軟體,只要訂閱我們的 RSS 網址即可。

Listen on Apple Podcasts Listen on Google Podcasts Listen on Overcast Listen on Pocket Casts Listen on Spotify Listen in Castro

贊助 weak self

謝謝,請見說明