协议定义了一系列方法,遵从此协议等对象应该实现它们(如果这些方法不是可选的,那么就必须实现)。于是,我们可以用协议把自己所写的API之中的实现细节隐藏起来,将返回的对象设计为遵从协议的 纯id 类型。这样的话,想要隐藏的类名就不会出现在API之中了。若是接口背后有多个不同的实现类,而你又不想指明具体使用哪个类,那么可以考虑用这个办法-------因为有时候这些类可能会变,有时候它们又无法容纳于标准的类继承类中,因而不能以某个公共基类来统一表示。
此概念经常称为“匿名对象”,与其他语言的匿名对象不同(指以内联形式所创建出来的无名类)。
1,协议可在某种程度上提供匿名类型。具体的对象类型可以淡化成遵从某协议的id类型,协议里规定了对象所应实现的方法。
2,使用匿名对象隐藏类型名称(或类名)。
3,如果具体类型不重要,重要的是对象能够响应(定义在协议里的)特定方法,那么可使用匿名对象来表示。