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
}
}