美文网首页
Swift 循环引用

Swift 循环引用

作者: EASXAI | 来源:发表于2021-12-30 13:30 被阅读0次

unowned
unowned要求被捕获的变量不能为nil,所以在closure中使用[unowned self] 必须保证self不能为空,所以当self被释放后再执行closure会导致程序崩溃。

let tapBackground = UITapGestureRecognizer()
tapBackground.rx.event.subscribe(onNext: {[unowned self] _ in
self.view.endEditing(true)
}).disposed(by: disposeBag)
view.addGestureRecognizer(tapBackground)

weak
weak允许被捕获的值为可选型,即可以被捕获的值为nil,当使用[weak self]时需要进行对self进行解包。或者使用
guard let strongSelf = self else { return }

let tapBackground = UITapGestureRecognizer()
tapBackground.rx.event.subscribe(onNext: {[weak self] _ in
self?.view.endEditing(true)
}).disposed(by: disposeBag)
view.addGestureRecognizer(tapBackground)

更多理解可查阅
https://blog.csdn.net/weixin_34191734/article/details/89050930?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ELandingCtr%7Edefault-1.queryctr&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ELandingCtr%7Edefault-1.queryctr&utm_relevant_index=1

相关文章

  • Swift--内存管理

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

  • 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 循环引用

    简介 Swift 使用 Automatic Reference Counting (ARC) 管理应用内存的使用,...

  • Swift 循环引用

    在闭包里面嵌套闭包的时候 [weak self] 必须处于第一个闭包 否则会造成循环引用 例: weak self...

  • Swift 循环引用

    unownedunowned要求被捕获的变量不能为nil,所以在closure中使用[unowned self] ...

网友评论

      本文标题:Swift 循环引用

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