協(xié)議代理,block的區(qū)別

之前面試遇到有問這樣的問題瞬沦,我的回答可能比較片面太伊,不夠深入。

下面是我的回答(不善言談的我):

“代理和block的共同特性是回調(diào)機制逛钻,不同的是僚焦,代理的方法比較多,比較分散曙痘。

使用block的代碼比較集中統(tǒng)一芳悲。”


我在網(wǎng)上搜了搜有以下結(jié)論:

代理的好處:

delegate運行成本低边坤。block成本很高的名扛。

block出棧需要將使用的數(shù)據(jù)從棧內(nèi)存拷貝到堆內(nèi)存,當然對象的話就是加計數(shù)茧痒,使用完或者block置nil后才消除肮韧;delegate只是保存了一個對象指針,直接回調(diào)旺订,沒有額外消耗弄企。相對C的函數(shù)指針,只多做了一個查表動作

delegate:

1区拳,“一對一”拘领,對同一個協(xié)議,一個對象只能設置一個代理delegate樱调,單例對象就不能用代理這是不對的?,任何人,任何對象,只要接受,只要允許,只要遵守了相關(guān)的協(xié)議,TA就可以使用代理(感謝http://www.reibang.com/users/22fefaea871c同學指出錯誤)约素;

2,代理更注重過程信息的傳輸:比如發(fā)起一個網(wǎng)絡請求笆凌,可能想要知道此時請求是否已經(jīng)開始业汰、是否收到了數(shù)據(jù)、數(shù)據(jù)是否已經(jīng)接受完成菩颖、數(shù)據(jù)接收失敗

block:

1:寫法更簡練样漆,不需要寫protocol、函數(shù)等等

2晦闰,block注重結(jié)果的傳輸:比如對于一個事件放祟,只想知道成功或者失敗,并不需要知道進行了多少或者額外的一些信息

3呻右,block需要注意防止循環(huán)引用:

ARC下這樣防止:

__weak typeof(self) weakSelf = self;

[yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {

[weakSelf doSomething];

}];

非ARC

__block typeof(self) weakSelf = self;

[yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {

[weakSelf doSomething];

}];

*什么時候用代理跪妥,什么時候用block

公共接口,方法較多也選擇用delegate進行解耦

iOS有很多例子比如最常用tableViewDelegate声滥,textViewDelegate

異步和簡單的回調(diào)用block更好

iOS有很多例子比如常用的網(wǎng)絡庫AFNetwork眉撵,ASIHTTP庫侦香,UIAlertView類。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纽疟,一起剝皮案震驚了整個濱河市罐韩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌污朽,老刑警劉巖散吵,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蟆肆,居然都是意外死亡矾睦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門炎功,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枚冗,“玉大人,你說我怎么就攤上這事蛇损×尬拢” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵州藕,是天一觀的道長。 經(jīng)常有香客問我酝陈,道長床玻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任沉帮,我火速辦了婚禮锈死,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘穆壕。我一直安慰自己待牵,他們只是感情好,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布喇勋。 她就那樣靜靜地躺著缨该,像睡著了一般。 火紅的嫁衣襯著肌膚如雪川背。 梳的紋絲不亂的頭發(fā)上贰拿,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機與錄音熄云,去河邊找鬼膨更。 笑死,一個胖子當著我的面吹牛缴允,可吹牛的內(nèi)容都是我干的荚守。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矗漾!你這毒婦竟也來了锈候?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缩功,失蹤者是張志新(化名)和其女友劉穎晴及,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫡锌,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡虑稼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了势木。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛛倦。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖啦桌,靈堂內(nèi)的尸體忽然破棺而出溯壶,到底是詐尸還是另有隱情,我是刑警寧澤甫男,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布且改,位于F島的核電站,受9級特大地震影響板驳,放射性物質(zhì)發(fā)生泄漏又跛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一若治、第九天 我趴在偏房一處隱蔽的房頂上張望慨蓝。 院中可真熱鬧,春花似錦端幼、人聲如沸礼烈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽此熬。三九已至,卻和暖如春滑进,著一層夾襖步出監(jiān)牢的瞬間摹迷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工郊供, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留峡碉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓驮审,卻偏偏與公主長得像鲫寄,于是被迫代替她去往敵國和親吉执。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

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

  • 設計模式 1.delegate和notification什么區(qū)別地来,什么情況使用? 2.描述一下KVO和KVC戳玫。 K...
    丶逐漸閱讀 1,957評論 3 2
  • 通知 : “一對多”,”多對一” 傳值 四個步驟: 1.發(fā)送通知 2.創(chuàng)建監(jiān)聽者 3.接收通知 4.移除監(jiān)聽者 使...
    lgvae閱讀 545評論 0 6
  • 目錄 屬性 修飾詞 循環(huán)引用 typeof與typedef 1. 屬性 objc所有類和對象都是c結(jié)構(gòu)體未斑,cate...
    Ryan___閱讀 355評論 0 1
  • 轉(zhuǎn)自李峰峰博客 一咕宿、概述 閉包 = 一個函數(shù)「或指向函數(shù)的指針」+ 該函數(shù)執(zhí)行的外部的上下文變量「也就是自由變量」...
    Joshua520閱讀 987評論 0 0
  • iOS網(wǎng)絡架構(gòu)討論梳理整理中。蜡秽。府阀。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,193評論 1 23