第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

block和delegate 使用的區(qū)別?

block和delegate 使用的區(qū)別?

iOS
猛跑小豬 2019-02-05 10:06:03
block和delegate 使用的區(qū)別
查看完整描述

3 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

delegate運(yùn)行成本低。block成本很高的。而且delegate是經(jīng)典設(shè)計(jì)模式也就是大部分的語言都可以實(shí)現(xiàn)的模式,相對(duì)block出現(xiàn)比較早。 block出棧需要將使用的數(shù)據(jù)從棧內(nèi)存拷貝到堆內(nèi)存,當(dāng)然對(duì)象的話就是加計(jì)數(shù),使用完或者block置nil后才消除。deleg...

查看完整回答
反對(duì) 回復(fù) 2019-03-19
?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

1.從源頭上理解和區(qū)別block和delegate
delegate運(yùn)行成本低,block的運(yùn)行成本高。
block出棧需要將使用的數(shù)據(jù)從棧內(nèi)存拷貝到堆內(nèi)存,當(dāng)然對(duì)象的話就是加計(jì)數(shù),使用完或者block置nil后才消除。delegate只是保存了一個(gè)對(duì)象指針,直接回調(diào),沒有額外消耗。就像C的函數(shù)指針,只多做了一個(gè)查表動(dòng)作。
2.從使用場景區(qū)別block和delegate
有多個(gè)相關(guān)方法。假如每個(gè)方法都設(shè)置一個(gè) block, 這樣會(huì)更麻煩。而 delegate 讓多個(gè)方法分成一組,只需要設(shè)置一次,就可以多次回調(diào)。當(dāng)多于 3 個(gè)方法時(shí)就應(yīng)該優(yōu)先采用 delegate。當(dāng)1,2個(gè)回調(diào)時(shí),則使用block。
delegate更安全些,比如: 避免循環(huán)引用。使用 block 時(shí)稍微不注意就形成循環(huán)引用,導(dǎo)致對(duì)象釋放不了。這種循環(huán)引用,一旦出現(xiàn)就比較難檢查出來。而 delegate 的方法是分離開的,并不會(huì)引用上下文,因此會(huì)更安全些。



查看完整回答
反對(duì) 回復(fù) 2019-03-19
  • 3 回答
  • 0 關(guān)注
  • 784 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)