分類下的代理團隊
回答
類別允許一個類添加新的方法或覆蓋現有的方法,因而允許擴展類沒有子分類。添加方法是最有用的目標,如果您不確切知道正在擴展的類是什麼,則覆蓋會變得非常錯誤。
它更多的是一種語言特徵而不是模式,它適用於每個類。
委託是一種模式不是語言功能,應該使用的類必須編碼它,否則它將無法工作。
通常一個委託將被要求實現一個由接收委託的類已知的協議。然後該類將使用委託來完成它編碼的內容,其中一些最常見的情況是使用策略模式的一部分發送通知,即在某些代碼部分中根據具體委託的實現情況提出問題讓委託執行一個動作或它們的任意組合。
例如UIApplicationDelegate
是通知(application:didFinishLaunchingWithOptions:
)和動作(application:openURL:sourceApplication:annotation:
)協議,UITextFieldDelegate是通知(textFieldDidBeginEditing:
)和策略(textField:shouldChangeCharactersInRange:replacementString:
)。
其實我可以想象在上述所有這些情況下使用類別實施委託:發送通知,執行操作,參與策略。但它會要求你非常非常好地知道擴展類正在做什麼,可能需要它的代碼,否則你可以很容易地破壞類或被更改的類實現中斷。所以這個用法在我看來是非常錯誤的。
分類,當你需要擴展類,而無需創建一個子類,例如,當你需要一個名爲ISURL方法添加到NSString的,您可以利用類別如下的使用,在這裏我們不創建一個子類,相反,我們正在擴展實現。
@interface NSString (Utilities)
- (BOOL) isURL;
@end
委託類似於回調函數,
類別:將方法添加到現有的類。
委託:允許一些其他的對象,委託,參與對象的動作下的另一對象的:修改行爲。
假設你有一個包含三個表的iOS應用程序。即使它們的配置方式相同,但如果這些表具有不同的代表,則每個表的行爲可能會有所不同。
你不能這樣做,因爲一個類別同樣適用於它擴展的類的所有實例。另一方面,如果你想擴展UITableView類來添加一些新的功能,你需要一個類別*。代表是特定於實例的,並且僅限於委派類的設計者爲其設計的角色。
*或一個子類,當然。
- 1. 不瞭解Cocoa的代理團隊
- 2. 作爲團隊管理員與團隊代理人證書的iPhone專案分發?
- 3. 添加Visual Studio團隊服務代理
- 4. 團隊城市構建代理
- 5. 如何查找我的Apple開發者團隊ID和團隊代理Apple ID?
- 6. 團隊代理是唯一可以構建Ad Hoc的團隊嗎?
- 7. iPhone特設分發團隊代理證書
- 8. 團隊的任務管理
- 9. 管理在多個團隊
- 10. 管理團隊捆綁
- 11. 即使團隊分佈
- 12. 拆分開發團隊
- 13. 分支團隊項目
- 14. 微服務團隊 - 如何處理「基礎設施」團隊?
- 15. 創作團隊及團隊用戶的
- 16. 團隊成員團隊公用事業部分2017年
- 17. 團隊代理和管理員 - Apple開發人員
- 18. Visual Studio團隊服務 - 構建代理/包管理
- 19. 如何獲得團隊名稱,如團隊A與團隊b
- 20. 在團隊構建中分析Resharper代碼分析xml
- 21. 一個團隊項目,多個團隊
- 22. Scrum團隊與傳統組織團隊
- 23. 團隊與多個團隊項目
- 24. 團隊基礎和背後的NuGet代理
- 25. 價格和團隊的下拉菜單
- 26. 團隊資源管理器中缺失的部分
- 27. 爲我的團隊創建代碼庫
- 28. 團隊城市android項目的代碼分析
- 29. 團隊資源管理器2012中的「團隊成員」面板在哪裏
- 30. 隱藏或停用團隊資源管理器中的團隊項目
那麼,這些東西只有遠親關係。我建議你發佈一些代碼,這會給你帶來這種困惑,我很樂意提供幫助! – 2011-05-13 05:44:54
我作爲面試問題得到了這個。所以我只是想知道。 – pa12 2011-05-13 05:56:19