亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

block和delegate 使用的區別?

block和delegate 使用的區別?

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

3 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

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

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

TA貢獻1946條經驗 獲得超3個贊

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



查看完整回答
反對 回復 2019-03-19
  • 3 回答
  • 0 關注
  • 776 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號