本文共 765 字,大约阅读时间需要 2 分钟。
循环引用的概念,不做赘述,下面直接用一个小 demo,说明 swift 闭包产生的循环引用:
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.转载地址:http://mfwci.baihongyu.com/