协议(protocol)
协议是OC的一项特性,与Java的“接口”类似。我们都知道OC不支持多继承,所以我们可以把某个类要实现的一系列方法定义在协议里面。而协议最常见的用途是实现委托模式。
委托模式
委托模式是一种编程设计模式,iOS中用它来实现对象间的通信。委托模式定义一套接口,某个对象若想接受另一个对象的委托,则需遵从此接口,以便成为其“委托对象”。另一个则可以给其委托对象回传一些信息,也可以发生相关事件时通知委托对象。
委托模式可以将数据与业务逻辑解耦。在整个Cocoa系统框架中,一般都是用协议这项特性来实现此模式。简单举个例子。
我们都知道iOS8之后推出了WKWebView来替代UIWebView。WKWebView相比UIWebView有更优越的性能,可是对于要兼容iOS7的项目来说,却无能为力。但是我们却可以自定义一个webview,iOS8以上用WKWebView,iOS8以下用UIWebView。利用运行时来判断。
|
|
有了webview,但是由于WKWebView和UIWebView有不同的代理方法,这时我们就可以用协议来解决这个问题。
|
|
我们定义一个协议,让WKWebView和UIWebView相应的代理方法里面实现上面相应的协议方法。