和许多其他的新开发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