我在 swift 规范中搜索了内部 func 上的捕获列表,但没有运气,有没有办法打破这种参考循环?
class Hello {
var name = "name"
var fn: (()->())? = nil
}
func foo() -> Hello? {
var bar: Hello? = Hello()
func wrapper() -> () -> () {
func inner() {
print("bar: \(bar)")
}
return inner
}
bar?.fn = wrapper()
return bar
}
var s = foo()
var b = Hello()
isKnownUniquelyReferenced(&s) // false
isKnownUniquelyReferenced(&b) // true