码迷,mamicode.com
首页 > 编程语言 > 详细

swift闭包新手详解(新手必看)

时间:2017-12-21 18:19:14      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:完成   div   详解   color   匿名   block   新手   使用   swift   

闭包的含义

      闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数比较相似。

技术分享图片

     闭包可以捕获和存储其所在上下文中任意常量和变量的引用。被称为包裹常量和变量。 Swift 会为你管理在捕获过程中涉及到的所有内存操作。

闭包的主要优化

  • 利用上下文推断参数和返回值类型
  • 隐式返回单表达式闭包,即单表达式闭包可以省略 return 关键字
  • 参数名称缩写
  • 尾随闭包语法

闭包的应用场景

    闭包和block的应用场景是一样的.(当你觉得这种情况在oc中用block能实现的,那么在swift中用闭包也能实现)

   1,异步执行完成回调.

   2,控制器间回调

   3,自定义视图回调

闭包的三种模式

闭包有三种形式,1,没有参数没有返回值的闭包(最简单的闭包)

技术分享图片这里有一点需要注意的,一定要去执行调用闭包,否则里边代码不会执行

2,带参数没有返回值的闭包

技术分享图片

3,带参数带返回值的闭包

技术分享图片这里要注意的是,返回值需要进行操作,不然会报警告.

 

注意!

in      去区分去分割函数的定义和实现,说通俗点就是分割 传参和后续操作的分割!!!

 

闭包回调

闭包回调,也就是说将闭包以参数的形式进行回调.

技术分享图片这里需要注意的是,swift中的GCD和oc中的GCD不同.

 

尾随闭包

尾随闭包是调比较简洁的写法

技术分享图片这里需要注意的是,"大多数",一般的闭包系统会自动帮我们做到尾随闭包, 并不是所有,例如上边GCD嵌套中.

 

技术分享图片

 

那么我们根据上边尾随闭包的含义来对它进行修改.技术分享图片把该回调的最后一个形参以及最外层的小括号删除即可.

 

逃逸闭包

当一个闭包作为参数传到一个函数中,但是这个闭包在函数返回之后才被执行,我们称该闭包从函数中逃逸。当你定义接受闭包作为参数的函数时,你可以在参数名之前标注 @escaping,用来指明这个闭包是允许“逃逸”出这个函数的。 

一种能使闭包“逃逸”出函数的方法是,将这个闭包保存在一个函数外部定义的变量中。举个例子,很多启动异步操作的函数接受一个闭包参数作为 completion handler。这类函数会在异步操作开始之后立刻返回,但是闭包直到异步操作结束后才会被调用。在这种情况下,闭包需要“逃逸”出函数,因为闭包需要在函数返回之后被调用。例如:

var completionHandlers: [() -> Void] = []
func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) {
    completionHandlers.append(completionHandler)
}

 

新手分享,不喜勿喷!!!求分享,求扩散.求转发.

 

swift闭包新手详解(新手必看)

标签:完成   div   详解   color   匿名   block   新手   使用   swift   

原文地址:http://www.cnblogs.com/baxiu/p/8081617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!