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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

3 回答

?
慕工程0101907

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

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

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

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

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



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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