为什么cocoa使用委托而不是继承?

时间:2010-01-14 22:56:52

标签: cocoa inheritance delegates

为什么cocoa使用委托而不是继承?

3 个答案:

答案 0 :(得分:6)

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

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

此外,这是一个经典的inheritance vs composition问题

答案 1 :(得分:5)

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

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

现在,当你将它与动态交换代表时可以实现的动态结合起来时,它可以创建一个非常灵活的健壮系统,可以促进更多的代码重用。

关于这些事情herehere,有一些一般性的讨论。您还可以找到一些较旧的SO问题herehere

答案 2 :(得分:0)