分類下的代理團隊
回答
類別允許一個類添加新的方法或覆蓋現有的方法,因而允許擴展類沒有子分類。添加方法是最有用的目標,如果您不確切知道正在擴展的類是什麼,則覆蓋會變得非常錯誤。
它更多的是一種語言特徵而不是模式,它適用於每個類。
委託是一種模式不是語言功能,應該使用的類必須編碼它,否則它將無法工作。
通常一個委託將被要求實現一個由接收委託的類已知的協議。然後該類將使用委託來完成它編碼的內容,其中一些最常見的情況是使用策略模式的一部分發送通知,即在某些代碼部分中根據具體委託的實現情況提出問題讓委託執行一個動作或它們的任意組合。
例如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. 團隊代理是唯一可以構建Ad Hoc的團隊嗎?
- 4. iPhone特設分發團隊代理證書
- 5. 團隊的任務管理
- 6. 管理團隊捆綁
- 7. 即使團隊分佈
- 8. 拆分開發團隊
- 9. 分支團隊項目
- 10. 團隊代理和管理員 - Apple開發人員
- 11. Scrum團隊與傳統組織團隊
- 12. 團隊與多個團隊項目
- 13. 爲我的團隊創建代碼庫
- 14. 團隊城市android項目的代碼分析
- 15. 隱藏或停用團隊資源管理器中的團隊項目
- 16. 小型數據庫開發團隊源代碼管理系統
- 17. 咕嚕任務在Visual Studio團隊服務(託管代理)
- 18. 只能有一個團隊代理嗎? IOS/MAC
- 19. TFS構建代理,與團隊服務器端口相同?
- 20. Docker用團隊城市代理編寫DNS問題
- 21. Visual Studio團隊服務構建不能部署測試代理
- 22. 在Lync中爲用戶設置代理和團隊成員
- 23. Visual Studio團隊服務 - 等待可用代理
- 24. Visual Studio團隊服務包管理API
- 25. 團隊城市和批處理文件
- 26. 免費團隊經理申請?
- 27. Team Foundation Server - 管理外部團隊
- 28. 建模團隊
- 29. Netbeans在團隊
那麼,這些東西只有遠親關係。我建議你發佈一些代碼,這會給你帶來這種困惑,我很樂意提供幫助! – 2011-05-13 05:44:54
我作爲面試問題得到了這個。所以我只是想知道。 – pa12 2011-05-13 05:56:19