What is "Protocol"(什么是协议)
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
在Objective-C中,类的结构确定了类的对象可以响应哪些消息(对象有哪些方法可以被调用),而还有一种比类结构更为高层次更灵活的机制,可以确定一个对象还可以响应某些没在类中定义的消息,它就是Protocols(协议)。Protocols(协议)与Java中的interfaces(接口)功能类似,但比Java中的interfaces更为灵活。
在Objective-C中,协议分为两种类型。一种是正式协议(formal protocols),一种是非正式协议(informal protocols)。当我们需要编译器或者运行时检查我们的类是否实现了协议中的一组方法时,就需要使用正式协议。而且正式协议可以像类一样也可以继承,而且一个类可以同时实现多个协议。因此正式协议非常类似于Java中的interfaces(接口)概念。而非正式协议有些特殊,我们将在后面的Categories一节中再来讨论。
就像Java中的一样,协议的重要作用之一是,在协议中可以定义一组远程进程中可以响应的方法,并通过一个本地代理对象来实现这个协议,这样,你就不用每次都发消息给远程进程去查询是否实现了某个方法,你仅仅询问一下本地的代理对象即可。当然,这点将在后面的Distributed Objects一章再详细讨论。
在线练习
{$ activeFileHint $}