[swift 進階]讀書筆記-第六章:函式 C6P3函式作為代理

liaoWorking在掘金發表於2019-01-15

第六章:函式(function)

6.3 函式作為代理 function as delegate.

foundation框架的代理


知識點1:本小節只有一個知識點 swfit中的代理用weak 來修飾 防止迴圈引用
 weak var delegate: xxxDelegate?
複製程式碼

結構體代理


知識點2:我們可以將代理方法用mutating關鍵字來修飾,來修改結構體本身的內容

書中舉了個例子:將結構體設定成代理。 發現原結構體的內部並不能改變

原因:delegate = structXX 時,實質是把結構體的複製賦值給了delegate。所以結構體內部不能發生改變
總結: 在代理和協議的模式中,並不適合使用結構體。

使用函式,而非代理(其實就是使用閉包,不用代理)

這個小節主要就是講對於結構體,儘量不要用delegate,用閉包就行。 通過[weak self]的方式避免迴圈引用

知識點3:要登出一個代理用 = nil就可以。要登出閉包就不行了,閉包實質上是函式,函式無法被比較,只能通過額外的邏輯程式碼去移除。

文章原始檔地址

相關文章