协议:
OC中的协议类似于Java中的接口,是一个功能方法的集合,但协议本身不是一个类不会自己去实现协议里的方法,而是委托其他任何类去使用实现,通常用来实现委托代理设计模式,实现不同类对象之间的事件消息通信。
协议中的方法默认都是@required类型的,也就是使用该协议的类必须实现协议里的这些方法。而明确使用@optional修饰的方法可以被使用的类选择性的去实现。
代理:
代理是一种设计模式,又叫‘委托’,指的是一个类对象在某些特定时刻通知到其他类的对象去做一些任务,但不需要获取到那些类对象的指针,两者共同来完成一件事,实现不同对象之间的通信。
作用主要是大大减小了对象之间的耦合度,是代码逻辑更加清晰有序,减少了框架复杂度,也便于代码的维护扩展。另外消息的传递过程可以有参数回调,类似于Java的回调监听机制,大大提高了编程的灵活性。