10: 喬喬 escaping

weak self - Un pódcast de 一三、波肥

Categorías:

本集竟然有人 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