何时使用(或不使用)代表

Dus*_*tin 8 delegates objective-c

这是一个相当普遍的问题,但我今天想知道代表们.在这一点上,我并没有特定的时间使用它们或者不使用它们 - 除了明显的情况,例如从选择器或tableview中传递选择.例如,如果存在我可以传递对象周围的引用并使用它来调用方法的情况,是否有理由实现委托?总之,什么是在不使用它时最好使用的委托模式?

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

Ole*_*ann 5

委托模式的优点是委托对象与其委托之间的松散耦合。松耦合提高了类在其他情况下的可重用性。

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

当然,这样做还有一个缺点,那就是需要更多的代码,而您编写的代码不是那么明确,因此可能会更难理解。这种(通常较小的)折衷是否值得,取决于您的用例。如果两个对象仍然紧密耦合,并且将来重用的可能性很低,则使用委托模式可能会过大。