block和代理的區(qū)別

block 和 delegate 都可以通知外面。block 更輕型,使用更簡(jiǎn)單,能夠直接訪問上下文,這樣類中不需要存儲(chǔ)臨時(shí)數(shù)據(jù),使用 block 的代碼通常會(huì)在同一個(gè)地方,這樣讀代碼也連貫。delegate 更重一些,需要實(shí)現(xiàn)接口,它的方法分離開來,很多時(shí)候需要存儲(chǔ)一些臨時(shí)數(shù)據(jù),另外相關(guān)的代碼會(huì)被分離到各處,沒有 block 好讀。

應(yīng)該優(yōu)先使用 block。而有兩個(gè)情況可以考慮 delegate。

  1. 有多個(gè)相關(guān)方法。假如每個(gè)方法都設(shè)置一個(gè) block, 這樣會(huì)更麻煩。而 delegate 讓多個(gè)方法分成一組,只需要設(shè)置一次,就可以多次回調(diào)。當(dāng)多于 3 個(gè)方法時(shí)就應(yīng)該優(yōu)先采用 delegate。

  2. 為了避免循環(huán)引用,也可以使用 delegate。使用 block 時(shí)稍微不注意就形成循環(huán)引用,導(dǎo)致對(duì)象釋放不了。這種循環(huán)引用,一旦出現(xiàn)就比較難檢查出來。而 delegate 的方法是分離開的,并不會(huì)引用上下文,因此會(huì)更安全些。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容