我是新來的目標C.我想問問爲什麼在委託C中需要「委託」。您能否爲我提供具體的原因,情況和代碼示例。我很感激任何人都可以幫忙。爲什麼需要「委託」?何時使用它以及如何應用它?
1
A
回答
4
這個習慣用法是我們在其他語言中稱之爲「回調」的方式通常是在ObjC中完成的。一個班級需要對特定情況做出反應(讓我們說點擊鼠標)。該類是相當通用的,而不是用任何特定領域的知識編碼的,因此該行爲的策略不是由該類編寫的。因此,它需要將該行爲「委託」給您的代碼。所以它在你指定的對象上調用一個方法。由於您的代碼可能知道當您單擊鼠標時想要執行的操作。
顯然,這種模式甚至有一篇維基百科文章,由喜歡爲模式賦予特殊名稱的人編寫。參見:Delegation pattern。
4
「委託」不是Objective-C的一項功能。相反,它是Cocoa框架使用的常見模式。
其基本思想是當事件發生時,檢測該事件的對象不必處理它。相反,它會通知代表。
要了解詳情,請參閱Cocoa Fundamentals Guide
另見維基百科 「Delegation pattern」 的文章,它包括一個Objective-C示例。
0
例如,TableView UI組件處理顯示數據,如表格。然而,它顯示的不是他的責任的一部分,這種行爲可以通過使用委託來添加。 tableView有一個你可以設置的委託成員,如果該對象實現映射到tableView的委託方法的方法,它們將被調用,否則它們不會。這意味着你不需要實現所有的東西,只是你需要的東西。
相關問題
- 1. 爲什麼需要一個null shared_ptr以及它如何使用?
- 2. jquery fancybox - 它是如何工作的以及它需要什麼?
- 3. Python包中需要什麼以及它應該如何構造?
- 4. 在MVC Razor中如何使用@以及何時需要它?
- 5. 應用javascript函數做什麼以及何時使用它?
- 6. 爲什麼以及何時需要Azure?
- 7. D_GNU_SOURCE的解釋爲什麼要使用它以及何時使用?
- 8. 什麼是片段URL以及爲什麼要使用它
- 9. 什麼是.inc以及爲什麼要使用它?
- 10. asm(「pause」)做什麼以及爲什麼要使用它
- 11. Android什麼是setLevel()以及何時應該使用它?
- 12. 字體:什麼,何時以及如何使用它們?
- 13. 什麼是Javascript方法CollectGarbage()?何時以及爲何要使用它?
- 14. 什麼是表達樹,您如何使用它們,以及爲什麼要使用它們?
- 15. 什麼是相位展開以及爲什麼需要它
- 16. SSL - 如何以及何時使用它
- 17. typedef void(* MyCallback):它是什麼以及如何使用它?
- 18. Magento XMLConnect ...它是什麼以及如何使用它?
- 19. ObjectSpace - 它是什麼以及人們如何使用它?
- 20. svn - 增量:如何使用它以及它做了什麼?
- 21. Plist:它是什麼以及如何使用它
- 22. PatternPathMotion Android,它究竟做了什麼以及如何使用它?
- 23. 爲什麼要使用委託在.net
- 24. Node.js「需要」 - 它究竟做了什麼以及如何做?
- 25. SqlCommand.Prepare()做什麼以及它應該在什麼時候使用?
- 26. 何時以及爲什麼我們需要使用COM?
- 27. ld:找不到-lwiretap。爲什麼以及如何使它可用
- 28. 爲什麼我需要Iterator接口,爲什麼要使用它?
- 29. WeakHashMap - 它的目的是什麼以及它應該如何正確使用
- 30. 在Coq中,爲什麼要使用Atom以及如何構造它?