Create a gist now

Instantly share code, notes, and snippets.

_
class Hoge {
var a: String? {
didSet {
b = a
}
}
var b: String?
deinit {
print("\(#function)")
a = nil // これ
output()
}
func output() {
print("a:", a as Any)
print("b:", b as Any)
}
}
do {
let h = Hoge()
h.a = "Hoge"
h.output()
print("===")
h.a = nil
h.output()
print("===")
h.a = "Fuga"
h.output()
}
//============
// didSet!!
// a: Optional("Hoge")
// b: Optional("Hoge")
// ===
// didSet!!
// a: nil
// b: nil
// ===
// didSet!!
// a: Optional("Fuga")
// b: Optional("Fuga")
// deinit
// a: nil
// b: Optional("Fuga") // !!!!!!!
``swift
class Hoge {
var a: String? {
didSet {
print("didSet!!")
b = a
}
}
var b: String?
deinit {
defer {
print("\(#function)")
a = nil
output()
}
}
func output() {
print("a:", a as Any)
print("b:", b as Any)
}
}
do {
let h = Hoge()
h.a = "Hoge"
h.output()
print("===")
h.a = nil
h.output()
print("===")
h.a = "Fuga"
h.output()
}
// ==================
// didSet!!
// a: Optional("Hoge")
// b: Optional("Hoge")
// ===
// didSet!!
// a: nil
// b: nil
// ===
// didSet!!
// a: Optional("Fuga")
// b: Optional("Fuga")
// deinit
// didSet!!
// a: nil
// b: nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment