類
、結構體
、純函數
來表示一個銀行帳戶的資金狀況。最後的結論: 類
:線程不安全。 結構體
:穩定,也不囉嗦 函數
:線程安全,但程序會變得囉嗦git
這裏就講了一些循環引用的基本知識點,我相信你們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"
複製代碼
注:捕獲列表中的值的做用域只能在閉包內
,閉包外沒法使用。閉包
文章源文件地址函數