1
我想知道當你在內存管理方面(即我想避免一個保留週期)在Swift中爲一個塊分配一個函數時它意味着什麼。在Swift中將函數分配給塊時捕獲語義?
例如,假設我有如下定義按鈕:
class Button {
var wasTapped:() -> Void
}
我用它在一個視圖控制器像這樣:
class ViewController {
let button: Button
func setUpButtonHandler() {
button.wasTapped = ...
}
func buttonWasTapped() {
// do something
}
}
我的問題是關於button.wasTapped = ...
分配。
顯然,如果我把它像這樣:
button.wasTapped = { self.buttonWasTapped() }
我剛剛創建了一個保留週期:視圖控制器 - >按鈕 - >視圖控制器。
然而,斯威夫特讓我做這件事,而不是:
button.wasTapped = buttonWasTapped
它是安全的這樣做呢? (即,這是否會阻止保留週期?)
幫助文章:) +1 –