在下面的代码中,为什么在给car1变量赋nil时,car2不为nil?
我问这个问题是因为我知道当一个对象的所有强引用都被分配为nil时,所有其他弱引用都被自动分配为nil,这是错误的吗?

非常感谢。

class ViewController: UIViewController {
    var car1 : Car? = Car()
    weak var  car2 : Car?

    override func viewDidLoad() {
        super.viewDidLoad()
        car2 = car1
        car1 = nil
        print("gfehtre")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

最佳答案

不知道您的问题是什么:仅当在下一行上执行car2时,car2 = car1不是nil,car1 = nil car2也变为nil,

自己测试:

override func viewDidLoad() {
    super.viewDidLoad()

    if let _ = car2 {
        print("first")
    }

    car2 = car1

    if let _ = car2 {
        print("second")
    }

    car1 = nil

    if let _ = car2 {
        print("third")
    }
}


您将在控制台中看到在其他所有情况下second为nil时仅打印car2

关于swift - 快速4弱变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51892588/

10-11 18:11