Objective-C中继承,委托,类别和观察者模式之间有什么区别?

时间:2014-03-12 07:43:54

标签: ios objective-c oop design-patterns delegation

我是Objective-C的新手,对iOS也是如此。我一直在开发Android应用程序 - 因此使用继承非常舒服。但在iOS中,几乎所有内容都是使用Delegation实现的。基本上我的问题是:

  • 这四个概念之间的区别是什么?何时使用它们?使用每种产品的利弊是什么?

我在Stackoverflow上搜索了这个问题,但在任何地方,我都可以找到这些概念。

1 个答案:

答案 0 :(得分:1)

继承:

将基类的属性继承到子类的方法。所有公共成员和受保护成员都继承到子类。 * Obj-C没有私有成员,所以这不起作用。(但是你通过类扩展来创建它们,即使有一些黑客可以访问它)。

授权:

将一个类的任务委派给另一个类的方法。经常使用的类和代理是UITableViewDelegate。这始终是1比1。可以使用回调和返回值。

类别:

向现有类添加新方法的方法。执行此操作时,子类也可以使用分类方法。您永远不会使用类别添加属性。 *但是,您可以使用关联对象添加。

观察员模式:

一个类充当广播者并广播消息。它并不关心谁是其观察者或接受者。并且所有观察者都接收观察者发送的通知并开始对该消息执行。这可以是1对0,1对1或1对多。即使不止一个广播公司也可以发送相同的通知,因此您可以说 -to - 。此处不会发送回叫或返回值。