古詩詞大全網 - 藝術簽名 - ios塊和委托的區別

ios塊和委托的區別

1.***相同的功能:

Block和Delegate中的方法可以理解為回調函數,它在發生某種情況時獲取並執行代碼片段。

2.塊(代碼塊)

優點:是輕量級回調,可以直接訪問上下文。使用塊的地方和實現塊的地方在同壹個地方,使得代碼組織更加連貫。

3.代表(代理人)

這是壹個相對重量級的回調,

缺點:

因為方法的聲明和實現是分開的,所以代碼的壹致性不是很好

代理經常需要存儲壹些臨時數據。

優勢:

代理的回調函數可以是壹組多個函數,在不同的時間可以調用不同的回調函數。

4.如何選擇使用哪壹個

1.當回調函數多於三個時,代理更好。

2.使用代碼塊容易造成循環引用,代理不會有這個問題。

3.在其他情況下,代碼塊具有優先權。

有三種類型的塊:

臨時的,只在堆棧中使用,不存儲。

比如數組的foreach遍歷,這個遍歷使用的塊是臨時的,不會被存儲。

需要存儲,但是只會調用壹次,或者有壹個完成期。

比如UIView的壹個動畫,動畫完成後,需要用block通知外部。壹旦調用了該塊,就可以刪除該塊。

它需要被存儲,並且可能被多次調用。

比如壹個按鈕的click事件,如果用block實現,需要長期存儲,會被多次調用。調用後,塊不能刪除,可能還有下壹個按鈕點擊。