协议解读
协议是一组没有实现的方法列表,任何的类均可采纳协议并具体实现这组方法。类似于JAVA中的接口概念,协议是一系列行为的集合。如果一个对象实现了某种协议,那么这个对象就会具备此协议中的行为。用面向对象关系来阐述就是like a的关系,与is a用来表述继承关系不同,A like B,那么B就是A要实现的协议,A可以像很多对象,所以A可以实现很多协议。万物皆对象,万物皆可盘!
在Objective-C 中的应用
在委托中使用
在实际开发中,我们经常会使用委托(也叫代理)实现我们预期的功能。委托是一种设计模式,租房人A委托B作为代理人去帮忙租房,这个就是最简单的委托模式。在OC中我们常采用协议来实现,UITableView的UITableViewDataSource, UITableViewDelegate都是委托的具体实现。
保证调用端可以安全调用方法
Objective-C中协议的概念与Java中接口的概念并不完全相同,即一个类可以在不声明它匹配某个协议的情况下,实现这个协议所包含的方法,也即实质上匹配这个协议,而这种差别对外部代码而言是不可见的。正式协议的声明不提供实现,它只是简单地表明匹配该协议的类实现了该协议的方法,保证调用端可以安全调用方法。类似Foundation框架下的NSString、NSArray等类默认就实现了<NSCoping>协议一样。