swift中的代理和閉包淺談


2016年01月05日星期二


真是搞了個(gè)開門紅配喳,元旦就感冒了。比樂購族淮。雖病痛加身辫红,我亦不屈不懼凭涂。嗚嗚嗚~~

最近抽空看了看swift,覺得這個(gè)語言真的是優(yōu)雅厉熟,給我?guī)砹吮容^多的驚喜,但较幌,我依然持保留態(tài)度揍瑟,因?yàn)椋瑵撘庾R(shí)中乍炉,覺得绢片,我還沒有學(xué)習(xí)的ruby應(yīng)該會(huì)給我?guī)砀嗟捏@喜。

  • 今天主要說兩個(gè)事:

  • 代理
  • 閉包
  • 代理

swift的代理和OC的代理基本一致(我現(xiàn)在是這么認(rèn)為的)岛琼,但是OC中有純正的可選代理方法底循,而swift卻沒有,要達(dá)到同樣的效果槐瑞,得跟oc去雜交

  • 1 首先熙涤,定義一份協(xié)議

protocol ViewControllerProrocol{
   //1.代理方法,將字符串傳遞給調(diào)用者
   func fuckthedelegate(str:String)
}
  • 2 定義一個(gè)代理屬性

//2.聲明代理屬性
  var delegate : ViewControllerProrocol?
  • 3 判斷代理是否實(shí)現(xiàn)代理方法,如果實(shí)現(xiàn)將服務(wù)器返回的字典進(jìn)行反序列化后傳遞給調(diào)用者

//3.傳遞給調(diào)用者
func btnClick(sender:AnyObject){
      
      self.delegate?.fuckthedelegate("竟然成功了困檩,我跟誰說理去祠挫?")
      
  }
  • 4 調(diào)用者進(jìn)行的操作

//4.
class ViewController: UIViewController, ViewControllerProrocol {
  //other code

  //MARK:-delegate代理
  func fuckthedelegate(str: String) {
      print(str)
  }
}
  • swift可選代理

    • 如上,swift代理的聲明和使用悼沿,還是感覺比oc要簡潔很多,但是等舔,swift現(xiàn)在是沒有可選代理的,也就是說糟趾,你代理中慌植,定義的方法,每一個(gè)都要在調(diào)用者中進(jìn)行實(shí)現(xiàn)义郑,不然無法編譯(天啦擼蝶柿,弱水三千我只取一瓢~~~),怎么辦喃? 和oc去雜交非驮,也有一說是oc剩下的渣···不過只锭,我覺得,有解決方法就挺好院尔。

    //聲明一份協(xié)議
    

@objc protocol ViewControllerProrocol{
//聲明代理方法
optional func fuckthedelegate(str:String)//可選實(shí)現(xiàn)
func fuckthedelegate()//必須實(shí)現(xiàn)
}
class ViewController1: UIViewController {
//other code
}

+ #### 注意上面要加上@objc 和 optional這兩個(gè)關(guān)鍵字 在調(diào)用的時(shí)候要加個(gè)可選鏈(?)

//3.傳遞給調(diào)用者
func btnClick(sender:AnyObject){

    self.delegate?.fuckthedelegate蜻展?("竟然成功了,我跟誰說理去邀摆?")
    
}
+ #### 基本上就這樣了纵顾,也沒有深究其他的東西,以后如果研究的深了可能再回來總結(jié)吧(later equal never)英語差栋盹,有錯(cuò)單詞施逾,別BB,接下來總結(jié)閉包```


- ### 閉包
閉包,在我的理解汉额,就是代碼塊曹仗。可以做代碼塊可以做的事情蠕搜。閉包不是必須的怎茫,它的存在只是錦上添花。閉包可以捕獲和存儲(chǔ)上下文中定義的的任何常量和變量的引用妓灌。這就是所謂的變量和變量的自封閉轨蛤,因此命名為”閉包“("Closures)").Swift還會(huì)處理所有捕獲的引用的內(nèi)存管理。 
* #### 全局函數(shù)和嵌套函數(shù)其實(shí)就是特殊的閉包虫埂。 
* #### 閉包的形式有: 
* (1)全局函數(shù)都是閉包祥山,有名字但不能捕獲任何值。 
* (2)嵌套函數(shù)都是閉包掉伏,且有名字缝呕,也能捕獲封閉函數(shù)內(nèi)的值。 
* (3)閉包表達(dá)式都是無名閉包斧散,使用輕量級(jí)語法岳颇,可以根據(jù)上下文環(huán)境捕獲值。 
* #### Swift中的閉包有很多優(yōu)化的地方: 
* (1)根據(jù)上下文推斷參數(shù)和返回值類型 
* (2)從單行表達(dá)式閉包中隱式返回(也就是閉包體只有一行代碼颅湘,可以省略return) 
* (3)可以使用簡化參數(shù)名话侧,如$0, $1(從0開始,表示第i個(gè)參數(shù)...) 
* (4)提供了尾隨閉包語法(Trailing closure syntax) 
* #### Swift中的閉包的表達(dá)式: {(parameters) -> returnType in statements}
* ### 總結(jié) 
* #### 之前講過block可以fuck Delegate闯参,這個(gè)閉包也可以瞻鹏。步驟按照前面的那個(gè)類似的就可以。代碼就不寫了鹿寨,麻煩新博。雖然閉包不是必須的,但是很多大牛寫東西都用了閉包的脚草,不玩轉(zhuǎn)這個(gè)赫悄,大牛寫的東西你都看不懂的×罂總結(jié)就先告一段落埂淮,等再學(xué)習(xí)一段時(shí)間,多用用写隶,沒準(zhǔn)就有其他的想法了倔撞。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市慕趴,隨后出現(xiàn)的幾起案子痪蝇,更是在濱河造成了極大的恐慌鄙陡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躏啰,死亡現(xiàn)場離奇詭異趁矾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)给僵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門毫捣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人想际,你說我怎么就攤上這事培漏∠澹” “怎么了胡本?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長畸悬。 經(jīng)常有香客問我侧甫,道長,這世上最難降的妖魔是什么蹋宦? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任披粟,我火速辦了婚禮,結(jié)果婚禮上冷冗,老公的妹妹穿的比我還像新娘守屉。我一直安慰自己,他們只是感情好蒿辙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布拇泛。 她就那樣靜靜地躺著,像睡著了一般思灌。 火紅的嫁衣襯著肌膚如雪俺叭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天泰偿,我揣著相機(jī)與錄音熄守,去河邊找鬼。 笑死耗跛,一個(gè)胖子當(dāng)著我的面吹牛裕照,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播调塌,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼牍氛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烟阐?” 一聲冷哼從身側(cè)響起搬俊,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤紊扬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后唉擂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體餐屎,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年玩祟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腹缩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸳玩,到底是詐尸還是另有隱情谭贪,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布磕诊,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏竿痰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一砌溺、第九天 我趴在偏房一處隱蔽的房頂上張望影涉。 院中可真熱鬧,春花似錦规伐、人聲如沸蟹倾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲜棠。三九已至,卻和暖如春萧朝,著一層夾襖步出監(jiān)牢的瞬間岔留,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工检柬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留献联,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓何址,卻偏偏與公主長得像里逆,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子用爪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

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