SwiftUI内功之 Closesure和escaping是什么有什么用

Closure 是什么

Closure闭包实在是太有用了!您可能已经知道这一点,但是闭包是您可以传递的代码块,并可以在代码的其他地方使用

Closure使命就是让代码紧凑且模块化

就像可以分配给变量的函数一样。您可以在代码中四处移动变量,并在以后调用闭包的代码。

let closure = { (name:String) -> String in
    return "Hello, \(name)!"
}

let message = closure("Bob")
print(message)

在上面的示例中,常量闭包包含一个闭包。此闭包采用一个称为String类型名称的参数。然后,闭包本身返回一个字符串-各种各样的问候。

在上述示例中,当使用closure(“ Bob”)调用闭包时,其值将分配给常量消息并打印出来。

闭包的常见用例是所谓的完成处理程序。

假设您要从网络下载要显示在视图控制器中的图像。使用Alamofire(Swift的流行网络和Web请求库),您的代码应如下所示:

Alamofire.request(imageURL).responseData {
    response in

    if let data = response.result.value {
        self.imageView?.image = UIImage(data: data)
    }
}  

如您所见,发出了一个Web请求,该请求已链接到对函数responseData(queue:completionHandler :)的调用。只有一个参数提供给该函数-一个闭包。

在闭包内部,将响应展开,并将其数据用于将图像数据分配给属性imageView。

此关闭是完成处理程序。当下载图片的请求完成时执行。换句话说:您可以使用闭包来确定特定动作完成后会发生什么(因此称为“完成处理程序”)。

封闭功能非常强大。在上面的示例中,闭包与请求发送到Web图像的位置相同,并且与imageView属性(和出口)位于相同的文件中。

实际下载图像并对其进行处理的代码在项目的其他位置,完全不同的位置。多亏了闭包,我们可以传递功能,保持关注点分离以及使我们的代码紧凑而模块化。

Closure与escapeing关系

出于性能方面的考虑,Swift假定所有闭包都是不冒号的闭包,这意味着它们将在函数内部立即使用而不被存储,这反过来意味着Swift不会触及引用计数。如果不是这种情况(如果您采取了任何措施来存储闭包),那么Swift将迫使您将其标记为@escapeing,以便必须更改引用计数。

推荐

基础文章推荐

经典教程推荐

技术源码推荐

推荐文章

CoreData篇

TextField篇

JSON文件篇


一篇文章系列

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342