[swift 進階]讀書筆記-第五章:結構體和類 C5P7_8 閉包和內存

結構體和類

5.7 閉包和內存(結構體和類的使用實踐)


本節總結:主要是用了結構體純函數來表示一個銀行帳戶的資金狀況。

最後的結論: :線程不安全。 結構體:穩定,也不囉嗦 函數:線程安全,但程序會變得囉嗦git

5.8 閉包和內存(引用循環和捕獲列表)


知識點:閉包會引發循環引用(該知識點同OC的block的循環引用,不贅述。)

weak 引用


這裏就講了一些循環引用的基本知識點,我相信你們OC過來的同窗都明明白白的。大意是能夠用[weak self]的捕獲列表解決這個問題。github

名詞: 捕獲列表

咋一看讓人很費解,那什麼是捕獲列表: 閉包裏面對周圍的常量或變量進行的操做叫捕獲。 咱們能夠經過捕獲列表去顯示的控制在閉包中的捕獲值。 閉包中的in前面的小框框[] 就是捕獲列表,裏面的值就是捕獲列表的值。安全

var a = 0
var b = 0
/// a 就在捕獲列表中,b沒有
let closure = { [a] in
    print(a, b)
}

a = 10
b = 10
closure()
// Prints "0 10"
複製代碼

注:捕獲列表中的值的做用域只能在閉包內,閉包外沒法使用。閉包

文章源文件地址函數

相關文章
相關標籤/搜索