This is my finding today that didSet doesn’t fire for wiped out weak optional. Could be interview question.

func f() {
    let n = NSNumber(value: 1)
    weak var weakOptional: NSNumber! = n {
        didSet {
            print("didSet")
        }
    }
}
f()