这是一个非常笼统的问题,但我今天想知道关于委托(delegate)的问题。在这一点上,我真的没有特定的时间使用它们或不使用它们——除了明显的情况,比如从选择器或表格 View 中传递选择。例如,如果在某种情况下我可以传递对对象的引用并使用它来调用方法,是否有理由实现委托(delegate)?总之,委托(delegate)模式的用途是什么,什么时候最好不要使用它?
感谢您快速而全面的回答!他们都非常有帮助。
最佳答案
委托(delegate)模式的优点是委托(delegate)对象与其委托(delegate)之间的松散耦合。松耦合提高了类在其他上下文中的可重用性。
委托(delegate)对象不必了解与它通信的对象的任何信息(除了它实现委托(delegate)协议(protocol)的要求之外)——尤其是它的类或它有什么方法。如果您稍后想要在不同的上下文中重用您的组件,或者让它与不同类的另一个对象通信,则该对象所要做的就是实现委托(delegate)协议(protocol)。委托(delegate)对象根本不需要更改。
当然,这也有一个缺点,那就是需要更多的代码,而且您编写的代码不那么明确,因此可能更难理解。这种(通常很小的)权衡是否值得取决于您的用例。如果这两个对象无论如何都是紧密耦合的,并且将来重用的可能性很低,那么使用委托(delegate)模式可能就有点矫枉过正了。
关于objective-c - 何时使用(或不使用)委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11294444/