协议具体该怎么用呢?首先我们说一些协议的声明.
协议就是一套标准,这个标准里声明了很多方法,但是不关心具体这些方法是怎么实现的,具体的实现是由遵循这个协议的类去实现.
协议的声明和类的声明类似,不过协议的声明是用@protocol 声明的一组方法列表.列表中的方法是由其他的类去实现的,相当于类的@interface 部分的声明.
方法的声明是,可以有两个关键字去限制是否必须让遵循该协议的类去实现此方法:
→@required 标注的方法为必须实现方法(也是默认的)
→@optional 标注的方法为可以选择实现
语法:
@protocol 协议名称
//方法列表
@end
怎么让一个类去遵循这个协议呢,怎么去实现里面的方法?
语法:
@interface ClassName:父类名<协议1,协议2,...>
@end
@implementaion ClassName
//实现协议中的方法
@end
比如:
外卖员要遵循 , 学生有空就自己去拿外面,没空就要送过来的协议
创建一个类:学生
1.创建一个类:学生 .h 文件 创建一个BOOL属性; (判断学生 忙不忙 拿外卖)
2.创建一个协议类: 写一个协议方法 -(void)sendFood:(BOOL)flag; (必须实现的方法)
3.学生类中 .h 文件 创建一个协议的属性, id 类型 <协议类名称> delegate
4.创建一个送外卖的类: 外卖员 .h文件 导入协议头文件 然后遵循协议 <协议名称>
5.外卖员 .m文件 判断 if 是 flag 就 "就拿上来" else "自己过来拿"
6.ViewController.m 文件 导入 学生和外卖员的头文件 创建stu 和 wa 并且 new出来
stu.delegate = wa;
给 stu.flag 赋值 = yes 或者 no; (YES 为 忙, NO 为 不忙)
网友评论