美文网首页Swift编程
Swift | 循环引用问题解决方式

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

作者: 字符管理师 | 来源:发表于2019-08-04 23:18 被阅读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就可以解决循环引用问题

相关文章

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

    问题代码 使用 问题结果 这种方式出现的是一种循环引用问题,导致的结果就是不会调用析构函数 解决办法 var pr...

  • Swift--内存管理

    Swift内存管理概述 强引用循环 打破强引用循环 闭包中的强引用循环 Swift内存管理概述 Swift中的AR...

  • swift闭包的循环引用

    类似于OC的block,swift闭包中也存在循环引用的问题,通常解决闭包中循环引用的方式有以下三种(1)方式一:...

  • Swift如何正确防止循环引用

    循环引用就是两个对象互相强引用对方,导致对象实例无法释放,那么在swift中如何防止这种循环引用呢? 一种方式是使...

  • Day2

    1 单方向的引用不会产生循环引用。循环引用:闭包引用了self,self引用了闭包。Swift推荐使用解决循环引用...

  • Swift与OC真正去理解Block解决循环引用的技巧

    Swift与OC真正去理解Block解决循环引用的技巧 Swift与OC真正去理解Block解决循环引用的技巧

  • 解决swift Block内的循环引用

    解决swift Block内的循环引用

  • Swift 循环引用

    Swift 循环引用 [TOC] 前言 本本主要研究的是Swift中闭包捕获外部变量时产生的循环引用。全部示例是在...

  • 2019-12-04

    swift 闭包循环引用产生以及处理

  • swift循环引用

    ARC仅仅能对类的实例做内存管理,也就是只能针对引用类型.结构体和枚举都是值类型,不能通过引用的方式来传递和存储,...

网友评论

    本文标题:Swift | 循环引用问题解决方式

    本文链接:https://www.haomeiwen.com/subject/xkmudctx.html