和許多其他的新開發Cocoa的開發人員一樣,我也爲代表和控制器概念而努力。我瞭解基礎知識,但有一點讓我感到不適。幾乎所有的解釋都表明,「通常」或「簡單情況下」(這是他們僅舉的例子)控制者和代表往往是同一個對象。 這會導致一個問題:您想在何時爲相同的接口對象分開控制器和委託?使用一個單獨的類時,需要您的委託獨立的代表和控制器
1
A
回答
2
兩個一般情況下是
- 當你需要在響應相同的委託信息進行不相關的操作,或
- 當你想分享委託在多個視圖或控制器之間的邏輯。
第一種情況的例子是具有兩個不相關表格的頁面。每個UITableView
都需要它自己的委託,因此使用控制器作爲委託在每個委託方法中需要一個醜陋的if
語句;定義和使用單獨的代表在這種情況下顯然是首選。
第二種情況的例子是一組類似的頁面,它們顯示來自類似結構的表格的DB數據。頁面本身是非常不相似的,所以你不能完全重用控制器。如果您選擇將委託放入控制器中,那麼表視圖數據源背後的大部分邏輯都是相同的。您可以將代碼放入共享委託實現中,並讓每個控制器使用特定於此控制器關聯表的配置參數來實例化該委託。
使用除控制器之外的另一個對象作爲委託時,請記住一點:控制器應該保留/保留對委託的強引用,因爲該視圖將只保留弱/分配引用。有關詳細信息,請參見property "assign" and "retain" for delegate。
相關問題
- 1. 控制器獨立的步進功能
- 2. 控制器的獨立視圖
- 3. 獨立搜索欄和表格視圖控制器
- 4. 來自獨立java代碼的springframework控制器
- 5. PHP獨立管理控制器笨
- 6. MVC:獨立管理控制器
- 7. 獨立angularJS控制器產生錯誤
- 8. AngularUI獨立文件模式控制器
- 9. ExtJS4模塊化與獨立控制器?
- 10. Android獨立音量控制
- 11. 獨立呼叫控制
- 12. Eclipse獨立控制檯
- 13. Java控制檯獨立?
- 14. 獨立的控制器和查看多個查詢?
- 15. 客戶端和服務器的獨立控制檯(Java RMI)
- 16. AngularJS中的獨立控制器和工廠模塊
- 17. 用於單獨導軌控制器的獨立CSS文件夾
- 18. 獨立的控制器調整相互關聯和表格大小
- 19. Express.js獨立模型,視圖和控制器
- 20. Angular中的類似控制器的獨立示波器
- 21. 將會話控制器分解爲3個獨立的控制器?
- 22. 獨立於平臺的OSGi控制檯
- 23. WCF控制檯應用程序獨立/獨立服務
- 24. 如何從獨立視圖控制器呈現視圖控制器?
- 25. Acceleo獨立代
- 26. 獨立的WPF過濾器控件
- 27. 框架,代表和視圖控制器
- 28. AngularJS:控制器獨立$ routeProvider的越來越的ReferenceError
- 29. 獨立的Symfony DIC在我的控制器
- 30. 單獨的控制器3