转:http://tigercat1977.blog.163.com/blog/static/2141561122012111294949110/

第七讲:Obj-C 协议 Protocol 

2012-12-12 09:49:49|  分类: Objective-C |  标签:objective-c  |字号 订阅

主要内容
      什么是协议
      如何定义协议
      如何使用协议

什么是协议
     协议是多个对象之间协商的一个接口对象
     协议提供一系列方法用来在于协议的实现者和代理者之间的一种通信方式
     协议类似于 C++ 中的纯虚函数,或者 java 中的接口

协议声明
      头文件 Foo.h
     @pritocol MyProtocol <NSObject>
              // 要定义的变量
              - (void) init;
              - (int) update:(int) time;
      @end


协议
      Protocol 声明一系列方法,这些放在实现 Protocol 中实现
      协议方法可以实现 optional , 可选实现
      @required     // 某一个方法必须实现
      @optional    // 某个方法可以不去实现

      协议需要继承于 基协议 NSObject
      协议可以多继承


协议声明
      头文件 Foo.h
     @pritocol MyProtocol <NSObject>
              // 要定义的变量
      @optional   // 可选实现
              - (void) init;
              - (void) exit;
      @required  // 必须实现
              - (int) update:(int) time;
      @end


OC 定义协议和实现协议
      头文件 Foo.h
      @protocol MouseListener
      @optional
              - (BOOL) mousePressed;
              - (BOOL) mouseClicked;
      @end
      @protocol KeyboardListener
              - (BOOL) keyPressed;
      @end

      @interface Foo: NSObject <MouseListener, KeyboardListener>
      {
      ......
      }
      @end

一个简单协议例子
   第七讲:Obj-C 协议 Protocol - tigercat1977 - tiger notes

协议使用例子

第七讲:Obj-C 协议 Protocol - tigercat1977 - tiger notes

判断某个对象是否响应方法
      既然接口可以部分实现,OC 对象提供了动态判断某个方法是否实现的方法
      respondsToSelector
      if ([test respondsToSelector:@selector(showInfo)])
      {
            [test  showInfo];
      }

respondsToSelector

第七讲:Obj-C 协议 Protocol - tigercat1977 - tiger notes


posted on 2013-03-07 16:58  jackljf  阅读(171)  评论(0编辑  收藏  举报