协议 【protocol】
一、协议:是一组方法的列表,是用来规范接口,实现对象间交互的一种机制。
二、协议的使用
1、@protocol 使用这个关键词来进行协议的声明
2、协议中只声明 协议方法 不进行实现
3、遵守协议的对象 进行方法的实现
代码中应用
**不是说遵守一个协议 就要实现协议里面的全部方法
任何遵守协议的对象 都可以调用协议里面的方法
//持有协议的id指针 只能指向遵守协议的对象
//只能调用协议上的方法 不能调用其他的方法 协议上没有的方法
三、作用
**模拟多继承 OC里面 是单继承 通过协议可以模拟多继承
规范接口 分散接口
比如说 做一个pad这么项目
协议:
leftVCProtocol 清晰明了的 规范了接口
-(void)inforButtonWasClicked;
-(void)secondButtonWasClicked;
-(void)threeButtonWasClicked;
被控制的界面进行 遵守协议
//实现协议 方法
四、权限修饰符 修饰方法的
@required 一看就知道 必须实现的
@optional 可选的方法
【总结】
1、遵守协议的类 创造出来的对象 也遵守协议
2、持有协议的id指针 调用协议里面的方法 不能调用协议中没有实现的方法
3、持有协议的id指针 只能指向 遵守协议的对象
4、required这个方法 只要遵守协议 必须实现
5、步骤:
创建 协议 只有头文件 写明协议方法
遵守协议 谁遵守协议 谁实现方法 < >
委托 代理
一、 是一种简单的设计模式,是用于对象间进行交互 数据通信的机制。
三要素:
委托方:主动方 是他主动发消息给代理放的
被委托方(代理):被动方 接收到 委托方 委托给他的消息 从而实现一定的功能的
协议:他是委托方 通过协议 来发送消息 给被委托方
【委托代理里面 协议方法的声明 直接写在委托方头文件上部】
注意:
1、委托方 : 持有一个id< Protocol > 属性 weak
2、代理方:遵守协议 实协议的方法
3、协议方 通过 协议方法 发送消息给代理方法
二、代理的用法
1、第一种用法
正向传值 :思维模式
2、第二种用法
反向传值 :现阶段 这个才是用的最多的 很多时候 使用代理模式 是必须的
反向传值 也叫做回调
当某一功能 不知道谁去实现 也不知道谁能够实现 的情况下
通过反向传值 这个代理模式 规定协议方法 来获得数据
网友评论