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()
를, I는이 같은 기능을 매개로 고정 전달할 경우 여전히 필요이
class MyClass2 {
var someProperty = 0
init() {
// Avoid retain cycle?
test.subscribe(using: update)
}
func update() {
self.someProperty += 1
}
}