Tag: 回调

Swift中的回调

回叫是一个非常有趣的话题,我们经常在Swift /目标C中遇到。在本文中,我们不仅会从理论上了解回叫,而且还将能够理解何时以及如何在代码中使用它们。 在开始之前,让我们先了解一下每次阅读回调时经常遇到的单词。 处理程序/完成处理程序 积木 代表们 关闭 以上所有术语表示同一事物,即“回调”。 它们只是在语法上有所不同。 块/闭包或委托具有不同的语法,但工作方式相同。 注意:我们将在稍后更加详细地了解Blocks,委托和闭包。 什么是回叫? 回调是一个函数或代码块,它将在某个时间点作为参数传递到另一个函数中。 func callback(){ // 做点什么 } func executeCallBack(回调){ //做点什么 } 现在的问题是,我们在哪里以及为什么需要回调。 假设要求我们构建一个应用程序以从服务器下载文件,并以下载百分比或下载完成后更新界面。 有了一个向服务器发出请求并下载文件的功能。 我们不能只是调用该函数并期望它在下载完成后返回,因为下载过程可能需要几分钟到几小时的时间,并且在那之前我们不能阻止UI。 在这种情况下,回调可以挽救。 我们可以使下载功能异步运行,尽管它会在下载完成之前立即运行,但是下载状态可以在实际完成后稍晚更新。因此,您要做的就是将下载功能传递给回调函数,以在下载完成后调用或更新进度百分比。 同样,让我们​​考虑另一种情况。 假设有一个要求,我们希望将数据从弹出窗口传递到呈现视图控制器。 请参考下图。 在这种情况下,还需要回调以将数据从弹出窗口传递到视图控制器,同时将其关闭。 简而言之,我们可以在以下情况下应用回调: 将数据传递到上一个视图控制器或更新UI。 当一个任务正在启动时,它将异步完成(即,将在调用函数返回后的一段时间内完成)。 让我们看一下带有多个回调(Swift 4.0)的以下示例: func downloadMethod(_ params:String, successHandler :@escaping(_ arg:String)-> Void, failureHandler :@escaping(_ error:Error?)-> Void) { //下载文件后成功回调 successHandler (“已成功下载。”) 如果让err =错误{ //如果发生某些错误,则调用失败回调 […]

通知观察者和回调

迅捷的iOS 在软件开发中,当我们需要从代码的不同部分执行不同的代码时,总是遇到某些情况。 这个概念与异步行为非常相似,在异步行为中,我们希望在上一个事件完成时执行代码。 本文的目的是在Swift iOS中提供Notification Observer和CallBack的概念。 通知中心观察员: 在通知中心观察者中,我们分为两部分,第一部分是通知,第二部分是观察者。 考虑一下观察者坐在您的代码中的某个地方等待听到通知,一旦通知激发观察者发现并执行您想要执行的代码,这是超高级的,可以让您的手被代码弄脏。 我创建了一个演示项目来演示它。 “请订阅”是默认的标签文本,“订阅”是带有默认文本的按钮。 每次按下订阅按钮时,都会触发通知事件,从而导致标签和按钮文本发生更改。 在注册通知之前,让我们扩展通知名称,这在良好实践中很重要: 让我们在viewDidLoad()函数中注册通知观察者: 添加观察者功能: 订阅按钮操作中的火灾通知: 当您按下“订阅”按钮Notification.default.post时,将触发通知,并成功击中Subsribed()函数并执行代码。 就是这样,我们已经使用Notification Center Observer完成了。