Mal*_*k13 8 iphone cocoa-touch objective-c ios
目标c中的常规做法是将控制器用作各种协议实现的委托.我在谈论使用iOS SDK时,或者是否有一个单独的类来接管代理卷?或者它只是一个最适合场景的情况?我对Objective c中的最佳实践非常好奇,因为我正在学习单独编写代码并且没有"现实世界"专家可以转向.
"控制器"侧重于所有权和Facade.外部对象将与控制器通信而不是受控制.通常应直接与a对话的唯一对象UITableView是UITableViewController.控制器通常拥有受控对象,并且控制器应至少具有与受控对象一样长的寿命.
"代表"侧重于行为,战略和观察员.一个对象要求其代表提供有关行为的指导(我应该显示这些数据吗?这应该是什么颜色?我可以执行此操作吗?).当有趣的事情发生时,一个对象告诉它的代表(我被触动了.我即将完成一些事情.我遇到了问题.)一种特殊的代表会回答数据问题(第3行的数据是什么?).这些被称为数据源.
如果系统的其余部分与"控制器"通信是很常见的,那么与"代表"交谈通常是不合适的.因此,例如,通常有一个指向a的指针UITableViewController并从系统中的其他位置发送消息.指向控制器的指针是不合适的tableView; 你应该通过控制器.另一方面,如果你有一个指向对象的指针,通常不适合要求它delegate.如果你需要,你可能设计的东西不正确.(最值得注意的例子是[[NSApplication sharedApplication] delegate]几乎总是与之交谈的错误.AppDelegate是应用程序的委托,而不是全局变量的倾销.)
如果一个对象有一个控制器,那么控制器几乎总是代表.根据我上面谈到的规则,当一个对象既是控制器又是委托时,它就是一个控制器.
单个对象可能是多个事物的委托,特别是如果大多数事情都是短暂的(例如警报视图).UIViewController委派一些事情并不罕见.
将代理保持为单独的类使代码也变得干净和便携.您可以通过复制和粘贴它们并进行细微更改来将这些委托类重用于其他目的.
将代理保持在同一个类中的优点是将它们保存在单独的类中.您可以轻松访问类中的私有变量/对象,这在第一种情况下是不可能的.
如果您将委托分开并希望将一些值传递给主类,则可能必须创建另一个委托:-)或添加观察者,或者您必须使用某些属性传递它们.
| 归档时间: |
|
| 查看次数: |
686 次 |
| 最近记录: |