美文网首页
swift 中解除循环引用的方法

swift 中解除循环引用的方法

作者: coderLYH | 来源:发表于2019-11-04 14:13 被阅读0次

swift 中解除循环引用的方法

var  block1 : (()->())? = nil

var  block2 : (()->())? = nil

var  block3 : (()->())? = nil

方法1: 苹果推荐写法

    block1 = { [weak self]  in
        self?.view.backgroundColor = UIColor.red;
    }
    // 可选绑定
    guard let b1 = block1  else{
        return
    }
    // 调用
    b1()

方法2: oc 的写法

    weak  var  weakSelf = self
    block2 = {
        weakSelf?.view.backgroundColor = UIColor.red;
    }
    // 可选绑定
    guard let b2 = block2  else{
        return
    }
    // 调用
    b2()

方法3: self 是assign 的 ,不会强引用 ,但是对象释放,指针地址不会改变,如果对象释放,会出现野指针问题

    block3 = { [unowned  self] in
        self.view.backgroundColor = UIColor.red;
    }
    // 可选绑定
    guard let b3 = block3  else{
        return
    }
    // 调用
    b3()
}

判断是否 销毁,检查内存泄漏

deinit {
    print( "\(self)消失了")
}

相关文章

  • swift 中解除循环引用的方法

    swift 中解除循环引用的方法 方法1: 苹果推荐写法 方法2: oc 的写法 方法3: self 是as...

  • Swift--内存管理

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

  • 391,Swift 解决循环引用的三种方法(推荐【weak se

    swift中可以通过三种方法解决循环引用的问题 利用类似oc方法解决循环引用weak var weakSelf =...

  • Swift中解除循环引用的三种方法

    本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java, 数据结构与算法, iOS...

  • Swift闭包理解

    基本 实际理解 调用 循环引用 解除循环引用

  • Swift3.0 解除循环引用

    此文章延续上一篇(循环引用)进行说明的,有想了解的骚年请点击 http://www.jianshu.com/p/...

  • swift语法02

    Swift面向对象 01-闭包的循环引用 循环引用形成条件闭包中访问了self或者self的属性/方法必须有一个强...

  • swift中解决循环引用的方法

    详见:http://wiki.jikexueyuan.com/project/swift/chapter2/16_...

  • Swift 循环引用

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

  • iOS内存管理

    swift 中如何解决循环引用 解决类之间的循环引用 weak:弱引用, 必须为变量(var),可选类型(?),指...

网友评论

      本文标题:swift 中解除循环引用的方法

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