objective-c - 何时使用(或不使用)委托(delegate)

标签 objective-c delegates

这是一个非常笼统的问题,但我今天想知道关于委托(delegate)的问题。在这一点上,我真的没有特定的时间使用它们或不使用它们——除了明显的情况,比如从选择器或表格 View 中传递选择。例如,如果在某种情况下我可以传递对对象的引用并使用它来调用方法,是否有理由实现委托(delegate)?总之,委托(delegate)模式的用途是什么,什么时候最好不要使用它?

感谢您快速而全面的回答!他们都非常有帮助。

最佳答案

委托(delegate)模式的优点是委托(delegate)对象与其委托(delegate)之间的松散耦合。松耦合提高了类在其他上下文中的可重用性。

委托(delegate)对象不必了解与它通信的对象的任何信息(除了它实现委托(delegate)协议(protocol)的要求之外)——尤其是它的类或它有什么方法。如果您稍后想要在不同的上下文中重用您的组件,或者让它与不同类的另一个对象通信,则该对象所要做的就是实现委托(delegate)协议(protocol)。委托(delegate)对象根本不需要更改。

当然,这也有一个缺点,那就是需要更多的代码,而且您编写的代码不那么明确,因此可能更难理解。这种(通常很小的)权衡是否值得取决于您的用例。如果这两个对象无论如何都是紧密耦合的,并且将来重用的可能性很低,那么使用委托(delegate)模式可能就有点矫枉过正了。

关于objective-c - 何时使用(或不使用)委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11294444/

相关文章:

objective-c - 当全局对象传递给函数时,在 Objective C 中实例化它们。关于对象范围的困惑

objective-c - 在 Objective-C 中使用 CACornerMask

c# - 使用多个参数调用控件时参数计数不匹配

ios - 如何在我的类(class)中使用协议(protocol)和委托(delegate)?

objective-c - 如何在 UITabBarController 中仅为一页添加 TTTableViewDragRefreshDelegate?

ios - iPhone 应用程序在设备中崩溃,但它在模拟器中运行

ios - 如何在滚动时隐藏 UIView?

iphone - 使用 NSCalendar——获取下个月的第一个星期二

ios - 如何在 Objective-C 中以编程方式检查协议(protocol)是否包含某些方法?

ios - Storyboard上的多个委托(delegate)或数据源连接