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