delegate和block的選擇

block和delegate乍看上去在作用上是很相似,但是關於它們的選型有一條嚴格的規範:當回調之後要做的任務在每次回調時都是一致的情況下,選擇delegate,在回調之後要做的任務在每次回調時無法保證一致,選擇block。

block

缺點:它會對block塊內部的所有對象引用計數加一,使用完或者block置nil後才消除,我們可以使用weak self來解決,但是還有一個問題是它會延遲當前對象的生命週期,這樣就會發生不可預知的問題。
優點:代碼簡練。

delegate

delegate是一直成熟的設計模式,只要用在適合的場景都沒問題,一對一傳輸數據並且可以添加傳輸過程的監聽,delegate注重傳輸過程,block更注重結果,而且delegate是弱引用不存在內存釋放的問題,ARC可以很好的解決;可讀性比block更高。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章