weak self podcast
weak self
10: 喬喬 escaping
0:00
-57:16

10: 喬喬 escaping

本集竟然有人 escape!那我們就順勢來回應與 @escaping 有關的 #weakself挑戰賽吧!為什麼 Swift closure 的 [weak self] 要加中括號呢?weak、unowned 你分得清楚差別嗎?一起來參與挑戰吧。

{ 完整節目筆記 https://weakself.dev/episodes/10 }

本集竟然有人 escape!那我們就順勢來回應與 @escaping 有關的 #weakself挑戰賽吧!為什麼 Swift closure 的 [weak self] 要加中括號呢?weak、unowned 你分得清楚差別嗎?一起來參與挑戰吧。

weak self 挑戰賽

  • 小綠的挑戰推文

  • 何謂 escaping、nonescaping closure

  • 何時用 weak、unowned,或是不用

Closure 的行為

  • 搭配服用的程式範例

  • closure 預設會 capture (strong reference) 外部變數

  • capture list 會生成一份 copy

Escaping 和 Nonescaping

  • function return 後還會發生的叫做 escaping

  • 有機會造成 retain cycle

Weak 和 Unowned 的運作原理

何時用 weak 或是 unowned?

  • closure 生命週期與對象生命周期一致時,使用 unowned

  • weak 有較多記憶體消耗

  • 要了解程式碼裡大家的生命周期啊

挑戰賽小結

  • closure 會捕捉外部使用的變數,有可能造成 retain cycle

  • weak 和 unowned 有不同的機制與生命週期

  • 沒有 retain cycle 不用 weak / unowned

  • weak 有額外的記憶體與性能消耗(可忽略)

工程師的 escape

13 最近在玩 Apple Arcade

  • 13 的 Apple #ArcadeReview 連載中

  • iPad mini 超適合玩 Apple Arcade 的,又輕又快又平💸

歡樂的時光總是過得特別快

更多 weak self

Discussion about this episode

User's avatar