完成处理程序:Swift
完成其他任务时执行。
介绍:
当我开始学习Swift时,我非常困惑一些概念完成处理程序就是其中之一。 在本文中,我将解释什么是完成处理程序及其工作方式以及为什么需要它。
在学习完成处理程序之前需要了解什么:
为了清楚地了解完成处理程序,我们需要了解闭包的基础,练习闭包,关于同步和异步功能的一点点知识。 您可以在这里聊天我发表的有关闭包的文章。
为什么我们需要完成处理程序:
在函数中,如果我们需要完成另一个任务之后再执行任何任务,而不是如何实现它。就像我们在完成下载后将更新UI那样,如何实现它? 换句话说,我们如何进行有序执行? 所有这些类型的问题解决了完成处理的概念。
制作完成处理程序:
创建一个完成处理程序闭包,然后将其传递给函数。
在这里,我们创建一个完成处理程序闭包,其类型为()→Void。现在,我们将创建一个可以使用此闭包的函数..
在这里,我们创建一个函数,该函数带有()→Void类型的参数。现在通过调用像这样的函数来实现此功能。
因此,必须先执行takeCompletehandler主体语句,而不是执行编译处理程序。 控制台将像。
从函数主体 从完成处理程序开始!
让我们举另一个例子:
让我们做一个从服务器下载数据,并在完成下载后给用户通知的功能。
首先创建下载功能。
下载完成后,此函数可以使用一个闭包和一个bool参数。完成处理程序参数取真值并发出通知。现在,让create和完成处理程序闭包将采用bool值,但不返回任何内容……
让我们实现功能
因此,它应该打印从服务器下载的数据..比打印“完全下载数据”要大100倍
//打印此
从sarver 下载数据...从sarver 下载数据...从sarver 下载数据...从sarver 下载数据 ...从sarver 下载数据...
...... 完整的下载数据
直接将Closure作为完成处理程序传递:
我们知道我们可以直接在函数参数上写闭包,所以让我们实现这个..
这也打印相同,完成处理程序将在下载完成后执行..并给出通知…
短手
我们也可以这样写得很短:
在这里,我们不使用参数,而是使用swift默认参数。
现在,如果我们使用Trilling闭包,我们也可以像这样使用
因此,最后我们很清楚,抱怨处理程序无非就是在函数中传递闭包,并在其他操作完成后使其执行。
通过完成处理程序传递数据:
我们可以通过完成处理程序传递数据。
首先创建一个可以接受类型([String])→无效的函数
让我们实现这个
现在,控制台应该比完成打印处理程序数组打印“做一些工作”十倍。
做一些工作 做一些工作 做一些工作 做一些工作
......
......
// 10次此 FinishDaily Swift
使用Trilling闭包和默认参数..的非常简写
passingData {print(“传递的数据\($ 0 [0])”)}
使用typealias:
首先输入typealias
typealias compleatuionhandler =([[String])-> Void
让我们创建功能
让我们用trilling闭包实现:
它应该打印下载文件10次,然后执行完成处理程序。
下载文件下载文件 下载文件 下载文件 下载文件 完成完整的处理程序的工作
结论:因此希望它清楚完成处理程序是如何工作的以及如何工作。感谢您与我在一起。如果有帮助,您别忘了分享给我鼓掌。
关于我:我是迅速的情人和iOS开发人员
我的链接在:https://www.linkedin.com/in/ekramulhoque/