Block和Delegate中的方法可以理解為回調函數,它在發生某種情況時獲取並執行代碼片段。
2.塊(代碼塊)
優點:是輕量級回調,可以直接訪問上下文。使用塊的地方和實現塊的地方在同壹個地方,使得代碼組織更加連貫。
3.代表(代理人)
這是壹個相對重量級的回調,
缺點:
因為方法的聲明和實現是分開的,所以代碼的壹致性不是很好
代理經常需要存儲壹些臨時數據。
優勢:
代理的回調函數可以是壹組多個函數,在不同的時間可以調用不同的回調函數。
4.如何選擇使用哪壹個
1.當回調函數多於三個時,代理更好。
2.使用代碼塊容易造成循環引用,代理不會有這個問題。
3.在其他情況下,代碼塊具有優先權。
有三種類型的塊:
臨時的,只在堆棧中使用,不存儲。
比如數組的foreach遍歷,這個遍歷使用的塊是臨時的,不會被存儲。
需要存儲,但是只會調用壹次,或者有壹個完成期。
比如UIView的壹個動畫,動畫完成後,需要用block通知外部。壹旦調用了該塊,就可以刪除該塊。
它需要被存儲,並且可能被多次調用。
比如壹個按鈕的click事件,如果用block實現,需要長期存儲,會被多次調用。調用後,塊不能刪除,可能還有下壹個按鈕點擊。