1
我有一個函數接受一個塊作爲參數。我可以使用尾隨閉包來傳入一段代碼,但在保留self
時,該閉包必須使用weak
參考。使用函數參數類型避免弱引用?
例如,見的MyClass2
初始化:
class MyClass {
func subscribe(using block: @escaping() -> Void) {
DispatchQueue.global().async {
block()
}
}
}
let test = MyClass()
class MyClass2 {
var someProperty = 0
init() {
// Weakly referenced
test.subscribe { [weak self] in
self?.update()
}
}
func update() {
self.someProperty += 1
}
}
MyClass2()
然而,這仍然需要如果我通過在閉合件作爲像這樣的功能參數?:
class MyClass2 {
var someProperty = 0
init() {
// Avoid retain cycle?
test.subscribe(using: update)
}
func update() {
self.someProperty += 1
}
}