swift学习--闭包的循环引用解决
来源:互联网 发布:淘宝网服装货源 编辑:程序博客网 时间:2024/05/07 11:46
一、什么是循环引用、怎么发生的
循环引用就是当self 拥有一个block的时候,在block 又调用self的方法。形成你中有我,我中有你,谁都无法将谁释放的困局。
在oc中,通常解决block循环引用的办法就是weak来修饰self!
__weak typeof self (weakself) = self
swift中的闭包等于OC中的block,因此在使用闭包的时候也需要注意循环引用的问题
二、解决swift中闭包循环引用问题
1.类似block解决办法
weak var weakSelf = self //解决循环引用 ,这里用var 而不用let //因为weak可能在运行时被修改 ——》指向的对象一旦被释放,会被设为nil GCDText { (data) in //? 可选解包 , 对象为nil,不会向对象发送getter消息,更安全 //! 强行解包 ,如果对象为nil 会发生崩溃,一般用于对象接下来要进行计算 print(weakSelf?.view ?? UIView()) }
2.swift解决方法,推荐使用
GCDText {[weak self] (data) in print(self?.view ?? UIView()) }
3.unowned;
GCDText { [unowned self](data) in }
unowned
阅读全文
0 0
- swift学习--闭包的循环引用解决
- Swift学习记录 -- 14.闭包的使用和解决循环引用方法
- swift闭包的循环引用
- swift 闭包循环引用的解决办法
- swift之闭包循环引用问题及解决方式
- Swift闭包循环引用
- swift中解决闭包循环引用的几种方式
- 15.9 Swift解决闭包引起的循环强引用问题
- Swift中解决闭包循环引用的几种方式
- 闭包的循环引用解决
- Swift自定义数据模型及闭包的循环引用问题
- swift-闭包产生的循环引用以及解决办法
- IOS闭包循环引用(Swift)
- Swift 闭包循环引用安全
- swift中防止闭包循环引用
- swift闭包循环引用问题
- Swift 中的闭包循环引用
- swift 闭包引用循环中的迷魂阵
- Mybatis中javaType和jdbcType对应关系
- CSS3无缝轮播效果
- c#设计模式之享元模式
- 利用Java反射技术调用Android中被隐藏的API
- Lua与C的交互(2)
- swift学习--闭包的循环引用解决
- 关于oracle临时表的一个问题
- 来自 Adobe 的用户体验专家 AEM 之:构建并部署 OSGi bundle
- 阻焊层和助焊层的区别
- GB28181的arm板的移植
- Tomcat 动态资源服务器部署及应用
- Hadoop2.7.0集群的NameNode在HA下如何切换active和standby状态
- springMVC常用注解问题
- 以太链防篡改测试