黑马程序员——Objective--C笔记之协议

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

协议(protocol)

1.协议就是定义了一组方法,然后让其他类去实现。一些方法的声明,一般写到一个.h的头文件中。

2.1)协议定义

       例:@protocol   xxx  <NSObject> 默认情况下遵守NSObject协议

              @end

   2)两种方法:

    (1)必须实现  

            @erquired关键字  一般默认情况下就是@erquired,必须实现方法的

    (2)选择实现 

             @optional关键字修饰的方法是可以实现,也可以不用实现

  例:@protocol   baseProtocol  <NSObject>

         @optional   

          -(void)jump ;

         因为是@optional可以不用实现jump方法。

3.协议的作用:供其他的类去遵守,如果一个类遵守了一个协议,就应该实现这个协议中定义的必须要实现的方法

4.类遵守协议的格式:

1)遵守一个协议:

      先导入头文件

例:@interface  类名:NSObject <xxx>

       @end

2)遵守多个协议:

例:@interface 类名:NSObject  <xxx,aaa,ddd>

       @end

4.使用协议的流程

     定义协议:


让类遵守这个协议


实现协议里的方法


结论:当我们遵守了某个协议后,就相当于这个类有了协议中所有方法的声明

5.protocol  协议使用注意:

1).protocol就是一个用途,用来声明很多方法(不能声明成员变量),不能写实现。

2).只要某个类遵守了这个协议,就拥有了这个协议中所有方法的声明。

3).只要父类遵守了某个协议,子类也要遵守。

4).protocol声明的方法可以让任何类去实现,protocol就是协议。

5).oc中不能继承多个类(单继承),但是可以遵守多个协议。继承(:),遵守(< >)。

6).基协议:<NSObject>是基协议,是最基本的协议,其中声明了很多最基本的方法。

7).协议可以遵守协议,一个协议可以遵守另一个协议,就可以拥有另一个协议中的方法声明。

二protocol代理模式

1.代理模式就是传入的对象,代替当前类完成了某个功能。

利用协议实现代理模式的主要思路:

保姆(baonu)照顾baby的过程用代理模式实现:

1)定义一个协议,里面声明代理类需要实现的方法列表,代理类需要实现照顾baby(feedbaby)与哄baby睡觉(hongsleep)两个方法。

2)创建一个代理类(如baomu),遵守上面的代理协议。

3)在需要代理的类中(如baby),定义一个对象,类型为id,且遵守代理协议的成员变量(delegate)

4)在baby类中调用成员变量delegate的方法,调用代理类的方法

5)main.m或其他使用baby类的文件中,为baby类的成员变量赋值

2.代理模式应用的场景

(1)远程模式:为一个对象在不同地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实

(2)虚拟代理:是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象

(3)安全代理:用来控制真实对象访问时的权限

(4) 智能代理:是指当调用真是的对象时,代理去处理另外一些事情

思考与实现:代理模式设计,学生通过中介找房子的过程

定义协议:


创建学生类:

Studengt.h


Studengt.m

创建zhongJie

zhongJie.h


 

zhongJie.m

main.m

 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值