Swift编程

Swift | 循环引用问题解决方式

2019-08-04  本文已影响1人  字符管理师

问题代码

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
    }
}

问题结果

  1. 这种方式出现的是一种循环引用问题,导致的结果就是不会调用析构函数

解决办法

var prev : Node? 加上一个weak -> weak var prev : Node?
var next : Node? 或者加上一个weak就可以解决循环引用问题

上一篇 下一篇

猜你喜欢

热点阅读