@protocol是什么
OC里面叫协议,JAVA里面与其对应的叫接口,C++里面叫抽象类
一种只定义函数名,不具体写实现,由不同的实例化对象(代理)执行不同内容的方法
protocol分析
1 | @protocol protocolName <NSObject> |
delegate分析
delegate(代理),就是要具体实现方法内容的实例化对象,通常被声明为一个id类型的遵循某个protocol的指针,可以为任意名字,但是一般都叫delegate
1 | @interface className : NSObject |
被该指针指向的类也需要遵循同样的协议className.delegate = class<protocolName>
protocol执行时的检查(坑坑坑!!!)
protocol执行时一定要进行检查,不然如果delegate不存在或者具体协议函数没实现,那么就Crash!!!
1 | //先问代理在不在,再问代理是否遵循某协议,然后去干 |