通知与协议的区别

 

一、协议进阶

使用协议总的就分一下几个步骤:

   1.协议声明/定义

   2.调用协议

   3.设置委托

   4.协议的实现

 

Objective-C中通知与协议的区别?

what is difference between NSNotification and protocol? (通知和协议的不同之处?)

协议有控制链(has-a)的关系,通知没有。
首先我一开始也不太明白,什么叫控制链(专业术语了~)。但是简单分析下通知和代理的行为模式,我们大致可以有自己的理解
简单来说,通知的话,它可以一对多,一条消息可以发送给多个消息接受者。
代理按我们的理解,到不是直接说不能一对多,比如我们知道的明星经济代理人,很多时候一个经济人负责好几个明星的事务。
只是对于不同明星间,代理的事物对象都是不一样的,一一对应,不可能说明天要处理A明星要一个发布会,代理人发出处理发布会的消息后,别称B的
发布会了。但是通知就不一样,他只关心发出通知,而不关心多少接收到感兴趣要处理。
因此控制链(has-a从英语单词大致可以看出,单一拥有和可控制的对应关系。

 

通知:

通知需要有一个通知中心:NSNotificationCenter,自定义通知的话需要给一个名字,然后监听。

优点: 通知的发送者和接受者都不需要知道对方。可以指定接收通知的具体方法。通知名可以是任何字符串。

缺点: 较键值观察(KVO)需要多点代码,在删掉前必须移除监听者。

协议:

通过setDelegate来设置代理对象,最典型的例子是常用的TableView.

优点: 支持它的类有详尽和具体信息。

缺点: 该类必须支持委托。某一时间只能有一个委托连接到某一对象。

 

 

 

 

 

 

posted @ 2013-10-14 18:28  陨宇  阅读(354)  评论(0)    收藏  举报