class Person {
var hello : (() -> Void)?
var name = "name"
init() {
print("init \(self)")
}
deinit {
print("deinit \(self)")
}
}
var person : Person!
person = Person()
person.hello = {() -> Void in
print("\(person.name)")
}
person = nil
和控制台输出为:为什么这不会导致Swift中的保留周期?
init Person
deinit Person
在我看来,这是因为“人”是可选的,因此斯威夫特保持在“你好”关闭弱引用,是这样吗?
可选项没有微弱存储。如果这是你想要的,你需要声明'人'为'弱'。但是弱对象*必须是可选项。 – MaddTheSane
这不是原来的问题,请不要改变它,直到你得到所有的答案。 – Cristik