weak self
weak self
一三、波肥
10: 喬喬 escaping
57 minutes Posted Sep 29, 2019 at 2:32 pm.
0:00
57:17
Download MP3
Show notes


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


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

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


--
Hosting provided by SoundOn