• 第七讲:ObjC 协议 Protocol


    转: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


  • 相关阅读:
    Android音频(7)——项目实战——耳麦插拔
    Android音频(6)——音频系统分析
    Android音频(5)——框架中的概念和涉及的文件
    Android音频(4)——音频驱动实战
    Android音频(3)——ALSA声卡驱动——DAPM
    Android音频(2)——ALSA声卡驱动——ASoC
    Mvc中Session导致action不异步的问题
    RabbitMQ 声明Queue时的参数们的Power
    RabbitMQ 实现RPC
    RabbitMQ Topic exchange
  • 原文地址:https://www.cnblogs.com/jackljf/p/3589249.html
Copyright © 2020-2023  润新知