block和delegate乍看上去在作用上是很相似,但是關於它們的選型有一條嚴格的規範:當回調之後要做的任務在每次回調時都是一致的情況下,選擇delegate,在回調之後要做的任務在每次回調時無法保證一致,選擇block。
delegate和block的選擇
缺點:它會對block塊內部的所有對象引用計數加一,使用完或者block置nil後才消除,我們可以使用weak
self來解決,但是還有一個問題是它會延遲當前對象的生命週期,這樣就會發生不可預知的問題。
優點:代碼簡練。
delegate是一直成熟的設計模式,只要用在適合的場景都沒問題,一對一傳輸數據並且可以添加傳輸過程的監聽,delegate注重傳輸過程,block更注重結果,而且delegate是弱引用不存在內存釋放的問題,ARC可以很好的解決;可讀性比block更高。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
hadoop安裝完後網頁http://localhost:50070/ 打不開
浮云6363
2020-07-07 14:12:54
Linux基本命令執行報錯:command not found 的解決辦法
浮云6363
2020-07-07 14:12:54
gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2
温清夜
2020-07-06 08:23:38
解決輸入git branch 進入編輯狀態,mac下出現END,無法返回
在終端設置(輸入下面的代碼) git config --global core.pager mor
温清夜
2020-07-06 07:43:59
安裝軟件報2503錯誤
安裝軟件報2503:在“命令提示符(管理員)”中輸入 msiexec /package 你將要安裝的程序的完整路徑及程序名
qq_27000425
2020-07-06 06:47:48
git clone時錯誤解決方案--contos安裝git教程
雪夜独酌
2020-07-02 16:03:44
lombok裏boolean屬性生成的getter方法是isXXX,而不是getXXX
罗小树
2020-07-02 12:23:21
項目報錯找不到主機名解決辦法
尼古拉斯_张三
2020-07-01 16:10:19
ORA-01810: format code appears twice
fengbonianshao
2020-06-29 20:15:41
swift錯誤: Type "xxx" does not confirm to protocol "BooleanType"
chenqipc
2020-06-28 17:16:39
安裝tflearn報錯(typeerror parse() got an unexpected keyword argument transport_encoding)
千语_肉丸子
2020-06-27 22:48:06
虛擬機無法查看ip地址,ping不通百度的解決思路
无敌浪浪
2020-06-27 04:51:30
Error: String types not allowed (at 'layout_gravity' with value 'bottom/center_horizontal').
WangHao9521
2020-06-26 20:24:46