美文网首页
Swift 基础笔记 - 闭包

Swift 基础笔记 - 闭包

作者: 其实朕是一只程序猿 | 来源:发表于2016-04-13 08:48 被阅读19次

    闭包

    • 闭包类似于 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 基础笔记 - 闭包

          本文链接:https://www.haomeiwen.com/subject/xutilttx.html