線上收聽與節目筆記
波肥來介紹 Swift 的 method dispatch。
👋開場
⏪上集節目回顧
聽眾 dan12411 貢獻他的 Xcode 技巧。
📰一週開發者新聞
- 🧪Xcode 12.5 beta 3 & iOS 14.5 beta 3
- ⏬XcodesApp
- 🥰工程師幹話—工程師應該要放心大膽的不寫文件
- 🧩Flutter 2 is here
⭐️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
- 聽眾信箱 [email protected]
- 官網 https://weakself.dev
- 主持人 一三、波肥
- Twitter @weak_self
- 提問箱
- 贊助 weak self