OC:协议

2016-08-17  本文已影响0人  Lin666

协议具体该怎么用呢?首先我们说一些协议的声明.

协议就是一套标准,这个标准里声明了很多方法,但是不关心具体这些方法是怎么实现的,具体的实现是由遵循这个协议的类去实现.

协议的声明和类的声明类似,不过协议的声明是用@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 为 不忙)

上一篇 下一篇

猜你喜欢

热点阅读