问题代码
class Node {
var value = 0
var prev : Node?
var next : Node?
init (_ value : Int) {
self.value = value
}
deinit {
print("deinit")
}
}
使用
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let a = Node(0)
let b = Node(1)
a.prev = b
b.next = a
}
}
问题结果
- 这种方式出现的是一种循环引用问题,导致的结果就是不会调用析构函数
解决办法
var prev : Node? 加上一个weak -> weak var prev : Node?
var next : Node? 或者加上一个weak就可以解决循环引用问题











网友评论