2015-06-29 30 views
-3

蘋果正在不斷改變現在以代表形式存在的大部分現有代碼以阻止。哪個更好的塊或委託?

我總是有一個困惑,在哪裏使用塊和在哪裏使用代表?

即使我總是覺得,如果我們使用委託而不是塊來提供抽象的更好的方法。 只是想聽到其他開發人員在這個主題中查看。如果這看起來很愚蠢的話題,請原諒我。

+0

沒有「更好」的東西。 –

+0

您需要從_「哪種方式更適合我的實際設計模式?」_的角度來檢查這樣的問題。 – holex

+0

http://stackoverflow.com/users/1214122/holex感謝您的回覆。 – user3556406

回答

1

我認爲許多「塊API」比代表團更復雜,毫無意義。讓我們看看它在做什麼:

  1. 在這兩種情況下,您都希望在外部類上運行自定義代碼。通常,這個代碼在事件發生時運行。 (連接完成,用戶做了一些事情,等等。)

  2. 通常您需要一個運行代碼的狀態。這意味着您可以訪問與代碼相關的一些數據。塊通過閉包來完成,代表通過對象狀態來完成。 (處理的C類型是void * user。)

  3. 區別在於,塊都具有各自的狀態,而委託的方法通過其公共實例共享狀態。

所以我的經驗法則是:

如果運行的代碼類似於「一個射手」(即完成處理)的我喜歡創建一個類來傳遞一個(單)塊代替以及充當委託的實例。

如果有不同的代碼一次又一次地運行(即獲得不同的事件作爲數據塊和認證挑戰,......),我不會傳遞大量塊(或者一個獲得類型參數的塊一個如果在裏面的鏈),但使用委派。

簡寫形式:One-shooter是一個塊,會話式的調用是一個委託。