swift-闭包产生的循环引用以及解决办法
2016-07-16 20:25
651 查看
循环引用的概念,不做赘述,下面直接用一个小 demo,说明 swift 闭包产生的循环引用:
验证控制器是否被释放,在 sb 中嵌套一层 跳转关系,运行跳转即可.
具体可到下面地址 下载 小demo.
https://github.com/moon13sun/-
class ViewController: UIViewController { // 声明一个闭包 var closure:(() -> ())? override func viewDidLoad() { super.viewDidLoad() // 解决闭包循环引用 // 方式01(iOS 5.0) // closure = {[weak self] () -> () in // // print(self?.view) // 要加 '?' // // } // 方式02(iOS 4.0) // closure = {[unowned self] () -> () in // // print(self.view) // 不加 '?' // // } // 方式03 weak var weakSelf = self closure = { () -> () in print(weakSelf?.view) } } // 重写 析构函数,看控制器是否被释放 deinit{ print("viewController挂了") } }
验证控制器是否被释放,在 sb 中嵌套一层 跳转关系,运行跳转即可.
具体可到下面地址 下载 小demo.
https://github.com/moon13sun/-
相关文章推荐
- 深入理解PHP之匿名函数
- Apple Swift学习教程
- 最后一次说说闭包
- 介绍 Fedora 上的 Swift
- Ruby中使用Block、Proc、lambda实现闭包
- LUA中的闭包(closure)浅析
- Lua中的闭包学习笔记
- C#中函数的创建和闭包的理解
- 深入理解javascript作用域和闭包
- javascript作用域和闭包使用详解
- 谈谈JavaScript中的函数与闭包
- 细品javascript 寻址,闭包,对象模型和相关问题
- JavaScript中的闭包原理分析
- 浅谈javascript中的闭包
- 学习javascript的闭包,原型,和匿名函数之旅
- javascript 闭包详解
- JavaScript 匿名函数和闭包介绍
- JavaScript 闭包深入理解(closure)
- 深入理解JavaScript 闭包究竟是什么