Swift 基础笔记 - 闭包

闭包

  • 闭包类似于 OC 中的 Block,是一段预先定义好的代码,在需要时执行

定义

  • 体验UIView动画闭包
//: () -> Void 表示一个 `不需要参数,返回值为空` 的闭包类型
UIView.animateWithDuration(0) { () -> Void in
//
}
  • 闭包表达式格式:
  { (形参名称1: 形参类型1, 形参名称2: 形参类型2, ...) -> 返回值 `in`
          //要执行的代码
  }

in 用于区分闭包定义和代码实现

  • 定义闭包
// 定义闭包
var closure = { (text: String) -> Void in
}
  • 调用闭包
// 调用闭包
closure("学习闭包")

闭包使用场景(回调)

  • 模拟耗时操作
  // 闭包的使用场景: 回调
  // 在子线程执行完任务后通知调用者
  func loadData(finished: (result: String) -> Void) {
      dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
          print("拼命加载数据: \(NSThread.currentThread())")

          dispatch_async(dispatch_get_main_queue(), { () -> Void in
              print(": \(NSThread.currentThread())")
              // 通知调用者
              finished(result: "获取到20条数据")
          })
      }
  }
  • 调用
loadData { (result) -> Void in
  print("网络请求完成: \(result)")
}

闭包的简写

// 当闭包的参数和返回都为空时可以省略 () -> Void in
UIView.animateWithDuration(1) {
}

// 闭包是最后一个参数,可以把闭包放在()后面,尾随闭包
UIView.animateWithDuration(1) { () -> Void in
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,304评论 3 25
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,212评论 30 472
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • 在上一篇文章Swift中的变量和常量中我总结了一些自己对于变量和常量的认识,最近学习了闭包,顺便给大家分享一下关于...
    老板娘来盘一血阅读 18,751评论 16 87
  • 你见过我的样子 我想象着你的样子 最好的相遇 就是都不记得的年纪 你听过我的声音 我回想着你的声音 最好的距离 就...
    草木风沙阅读 194评论 0 1