设为首页 加入收藏

TOP

Swift函数和闭包(二)
2017-10-10 12:16:17 】 浏览:4010
Tags:Swift 函数
数据 /// /// - parameter finished: 完成回调 func loadData(finished: () -> ()) { self.finishedCallBack = finished print("开始加载数据...") // ... working() } func working() { finishedCallBack?() } deinit { print("网络工具 88") }

运行测试,会出现循环引用

解除循环引用

  • 与 OC 类似的方法
/// 类似于 OC 的解除引用 func demo() { weak var weakSelf = self tools?.loadData() { print("\(weakSelf?.view)") } } 
  • Swift 推荐的方法
loadData { [weak self] in print("\(self?.view)") } 
  • 还可以
loadData { [unowned self] in print("\(self.view)") } 

闭包(Block) 的循环引用小结

  • Swift

    • [weak self]
      • self是可选项,如果self已经被释放,则为nil
    • [unowned self]
      • self不是可选项,如果self已经被释放,则出现野指针访问
  • Objc

    • __weak typeof(self) weakSelf;
      • 如果self已经被释放,则为nil
    • __unsafe_unretained typeof(self) weakSelf;
      • 如果self已经被释放,则出现野指针访问
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Swift 基础语法 下一篇Swift构造函数和便利构造函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目