1.一个类里面对个代理对象,同一个协议还是有可能出现的并不是绝对的一对一
2.降低程序耦合度(依赖性不高。)结构层次更强
3.由代理者和委托者还有协议组成的一种设计模式
4.代理的时候必须用week或者你每次对象释放完就必须把delegate 设置成空,否则会产生野指针(用assign的话就必须手动置空)
4.代理方:
5.代理参数
就是调用委托者已经实现的代理方法(还有就是把自己当成代理)
6.委托者
遵守代理者的协议
实现代理者协议里面的方法
比较
什么时候用代理什么时候用block
比如多个消息需要传递的时候应该选择代理,比较不会臃肿代码,想Tableview封装的就是用代理来实现多个方法的
代理是一个属性只能有一个委托对象,当需要回调多个委托对象的时候就应该选择用block来进行
从性能看代理消耗小于block block涉及到堆栈的一系列操作消耗更大
代理更注重过程信息的传输:比如发起一个网络请求,可能想要知道此时请求是否已经开始、是否收到了数据、数据是否已经接受完成、数据接收失败 block注重结果的传输:比如对于一个事件,只想知道成功或者失败,并不需要知道进行了多少或者额外的一些信息