在下面的代码中,为什么在给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/