七. 閉包/Closures

閉包是獨立的功能塊源织,可以傳遞并在代碼中使用琢融。Swift中的關(guān)閉類似于C和Objective-C中的block以及其他編程語言中的Lambdas

1.形式:

{(參數(shù)) - >返回類型? in

聲明

}

基本形式,完整
作為參數(shù),已經(jīng)能夠確定該閉包的函數(shù)類型,即什么參數(shù)什么返回值,所以可以省略
因為閉包中只有一行代碼,所以不會造成歧義的情況下,return可以省略
更加簡便的方式,$0,$1..這是swift提供的一些速記的編寫方式
還有更加簡便的方式,不過適用條件比較特定了

2.尾閉包

尾閉包

如果提供了一個閉包表達式作為函數(shù)或方法的唯一參數(shù),并且您將該表達式提供為尾隨閉包,則()在調(diào)用函數(shù)時,不需要在函數(shù)或方法名稱后面寫入一對括號

小括號都省略

尾閉包,說的就是最后一個參數(shù)是閉包,可以不用寫在函數(shù)參數(shù)的小括號中,直接寫在外面大括號中就行了,總之就是為了寫法更加簡便,意義沒有什么變化

3.Capturing Values/捕捉值

函數(shù)1里面包含另一個函數(shù)2,函數(shù)2使用了函數(shù)1的局部變量
不斷調(diào)用返回的函數(shù)2,原先的參數(shù)會不斷積累

個人理解是,返回的incrementByTen是一個對象,他有保存了它的值,所以會不斷的積累

4.Escaping Closures逃逸閉包

簡單點介紹就是,如果這個閉包是在這個函數(shù)結(jié)束前內(nèi)被調(diào)用,就是非逃逸閉包,即noescape 如果這個閉包是在函數(shù)執(zhí)行完成后才被調(diào)用,調(diào)用的地方超過了這個函數(shù)的范圍,就叫逃逸閉包

例如平常使用的masonry,就是非逃逸閉包,因為他是馬上執(zhí)行,而網(wǎng)絡請求則是逃逸閉包,因為他是延時執(zhí)行,甚至不執(zhí)行

蘋果官方舉的例子:

改函數(shù)結(jié)束時都沒有調(diào)用該函數(shù),只是把它加入到數(shù)組中,至于什么時候執(zhí)行,不知道!
someFunctionWithNonescapingClosure函數(shù)是立即執(zhí)行閉包,所以是非逃逸閉包,還有就是逃逸閉包需要用self來引用

5.Autoclosures自動閉包

少了個大括號
正常的樣子
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蒜撮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跪呈,老刑警劉巖段磨,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件取逾,死亡現(xiàn)場離奇詭異,居然都是意外死亡薇溃,警方通過查閱死者的電腦和手機菌赖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沐序,“玉大人琉用,你說我怎么就攤上這事〔哂祝” “怎么了邑时?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長特姐。 經(jīng)常有香客問我晶丘,道長,這世上最難降的妖魔是什么唐含? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任浅浮,我火速辦了婚禮,結(jié)果婚禮上捷枯,老公的妹妹穿的比我還像新娘滚秩。我一直安慰自己,他們只是感情好淮捆,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布郁油。 她就那樣靜靜地躺著,像睡著了一般攀痊。 火紅的嫁衣襯著肌膚如雪桐腌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天苟径,我揣著相機與錄音案站,去河邊找鬼。 笑死棘街,一個胖子當著我的面吹牛蟆盐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹬碧,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼舱禽,長吁一口氣:“原來是場噩夢啊……” “哼炒刁!你這毒婦竟也來了恩沽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤翔始,失蹤者是張志新(化名)和其女友劉穎罗心,沒想到半個月后里伯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡渤闷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年疾瓮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片飒箭。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡狼电,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弦蹂,到底是詐尸還是另有隱情肩碟,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布凸椿,位于F島的核電站削祈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏脑漫。R本人自食惡果不足惜髓抑,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望优幸。 院中可真熱鬧吨拍,春花似錦、人聲如沸劈伴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跛璧。三九已至严里,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間追城,已是汗流浹背刹碾。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留座柱,地道東北人迷帜。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像色洞,于是被迫代替她去往敵國和親戏锹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Swift 2.2 我總是覺得 Swift 的語法書有點晦澀火诸〗跽耄看的不是那么讓人理解。說實在話,語法書的閉包我看了好...
    Laughingg閱讀 391評論 0 1
  • 閉包是自包含的函數(shù)代碼塊奈搜,可以在代碼中被傳遞和使用悉盆。Swift 中的閉包與 C 和 Objective-C 中的代...
    窮人家的孩紙閱讀 1,708評論 1 5
  • 閉包是自包含的函數(shù)代碼塊,可以在代碼中被傳遞和使用馋吗。Swift 中的閉包與 C 和 Objective-C 中的代...
    雨影閱讀 717評論 0 2
  • * 閉包 是自包含的函數(shù)代碼塊焕盟,可以在代碼中被傳遞和使用。swift中的閉包和Objective-C中的代碼塊(b...
    EndEvent閱讀 856評論 4 8
  • 當你意識到喜歡一件事是因為想逃避另一件事時 那你應該停下 因為你會無法擺脫
    小隱形閱讀 123評論 0 0