Jon*_*ess 6

使用委托,您可以将一个对象作为许多其他对象的委托.例如,您可以将MyController实例作为NSTableView,NSTextField,NSWindow以及组成您的界面的任何其他对象的委托.这提供了一个紧凑的位置,可以将所有用户界面代码与UI的一个部分相关联.

如果您使用子类化完成了这项操作,则必须为每个想要回调的对象创建一个子类.

此外,这是一个经典的继承与组合问题


Bry*_*ore 5

通常,创建子类可能是一个耗时的过程,需要大量的基础工作,并覆盖各种模板方法.

同时,使用委托允许您创建一个简单的对象,该对象可以回答一些特定问题或以各种方式做出反应.

现在,当您将此功能与通过动态交换代表可以实现的动态相结合时,它可以创建一个非常灵活的健壮系统,从而促进更多的代码重用.

这里这里有一些关于这些事情的一般性讨论.你也可以在这里这里找到一些旧的SO问题.