美文网首页
在block中对弱引用进行强引用

在block中对弱引用进行强引用

作者: lanmoyingsheng | 来源:发表于2019-02-20 09:14 被阅读2次
typealias Closer = ((_ string1 : String, _ string2 : String) -> Void)
var block:Closer?

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    
    let vc = ViewController()
    weak var weakSelf = vc
    
    self.block = { (string1 : String,  string2 : String) -> Void in
        
        print(weakSelf)
        let strong = weakSelf
        
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5, execute: {
            
            print(strong)
        })
    }
    
    self.block?("", "")
}

打印结果:

Optional(<Demo.ViewController: 0x7fd93a40ace0>)
Optional(<Demo.ViewController: 0x7fd93a40ace0>)

如果block中不进行强引用,而直接强行拆包,会引起奔溃。这在OC中更能体现。
打印结果:

Optional(<Demo.ViewController: 0x7fd93a40ace0>)
nil

相关文章

  • 浅谈OC中block

    Block的循环引用:block强引用self,self强引用block。解决方案:对self进行弱引用。 内部修...

  • 在block中对弱引用进行强引用

    打印结果: Optional()Opti...

  • iOS开发中常用的宏

    1,获取屏幕的大小,宽度和高度 用法: 2,弱引用/强引用 弱引用和强引用主要用在Block中,防止循环引用,导致...

  • block的使用

    一个对象中强引用了block,在block中又强引用了该对象,就会发生循环引用。1、变量在block中使用 2、对...

  • block 中强引用与弱引用

    在项目学习的时候,遇到 block 内部使用强引用还是弱引用的一些内存问题,总结记录一下。 创建一个测试 demo...

  • iOS 中的内存管理优化

    闭包 外面将强引用对象转化为弱引用指针,防止循环引用 block内弱引用转换成strong强引用指针,防止多线程和...

  • Java 引用类型

    JDK1.2之后,java对引用的概念进行了拓充,将引用分为强引用,软引用,弱引用,虚引用 强引用: 指的是在代码...

  • 工作笔记

    1、self在block里强引用怎么处理? 首先,在block外面声明一个弱引用对象__weak ViewCont...

  • Android 性能优化-Java引用类型

    Java引用类型分为强引用、软引用、弱引用、虚引用,本文对四种引用类型进行分析 强引用 强引用:日常开发中最常见的...

  • iOS--强引用,弱引用 及strong, weak,retai

    强引用和弱引用:特点:在强引用中,有时会出现循环引用的情况,这时就需要弱引用来帮忙(__weak)。强引用持有对象...

网友评论

      本文标题:在block中对弱引用进行强引用

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