Swift中解决闭包循环引用的几种方式
来源:互联网 发布:下载资源的软件 编辑:程序博客网 时间:2024/04/30 14:11
Swift 属性的默认是强引用
响应cell上的按钮事件
在cell中写一个闭包,VC的cell代理中调用
var switchCallBack:((_ sender:Bool)->(Void))?
方式一:[weak self] 【weak self】 和 __weak typeof(self) 作用类似 -->对象被回收时,内存地址会自动置nil,更佳安全,推荐使用这种方式
cell.switchCallBack = { [weak self] (isOn) in
self?.orderModel?.takeMySelf = isOn
self?.orderDetailModel?.takeMyself = isOn
self?.tableView.reloadData()
}
方式二: 【unowned self】 和 __unsafe__retained作用类似—>对象被回收时,内存地址不会自定指向nil,会造成野指针访问
cell.switchCallBack = { [unowned self] (isOn) in
self?.orderModel?.takeMySelf = isOn
self?.orderDetailModel?.takeMyself = isOn
self?.tableView.reloadData()
}
方式三:OC式的解决方式
弱引用的对象,有一次执nil的机会
weak var weakSelf = self
cell.switchCallBack = { (isOn) in
weakSelf.orderModel?.takeMySelf = isOn
weakSelf.orderDetailModel?.takeMyself = isOn
weakSelf.tableView.reloadData()
}
- swift中解决闭包循环引用的几种方式
- Swift中解决闭包循环引用的几种方式
- swift之闭包循环引用问题及解决方式
- swift学习--闭包的循环引用解决
- swift中防止闭包循环引用
- swift中解决循环引用的方法
- ios-Swift中解除循环引用的三种方式
- swift闭包的循环引用
- swift 闭包循环引用的解决办法
- Swift闭包循环引用
- Swift 闭包中循环引用解决方式
- Swift学习记录 -- 14.闭包的使用和解决循环引用方法
- 15.9 Swift解决闭包引起的循环强引用问题
- 闭包的循环引用解决
- Swift自定义数据模型及闭包的循环引用问题
- swift-闭包产生的循环引用以及解决办法
- IOS闭包循环引用(Swift)
- Swift 闭包循环引用安全
- mysql group by 错误
- 【牛腩】AJAX
- 2018年之前的学习计划(今天8.14)
- Catch That Cow POJ
- 扫描配置文件(一)@Value值注入及配置文件组件扫描方式
- Swift中解决闭包循环引用的几种方式
- PyCharm 教程(五)断点 调试
- Mac下的Qt安装
- 图标字体的使用
- oracel 字符串分割成多行操作
- java 对象初始化和类加载器
- k-近邻算法与kd树优化
- automake,autoconf使用详解
- B