zoukankan      html  css  js  c++  java
  • iOS 的 Protocol 协议的使用

    protocol -->用来声明方法. 用来存储一系列方法的声明.只是一个.h文件

    任何类只要遵守了protocol,就相当于拥有了protocol的全部方法的声明.

    @protocol GMProtocol <NSObject>

    @required  //必须实现,如果不写就默认是required.如果不实现仅是会弹出警告.(因为是OC是弱语法)

    - (void) read;

    @optional //可选

    - (void) write;

    @end

    让学生类遵守GMProtocol的协议;

    @interface Student : NSObject <GMProtocol>

    @end

    @implementdation Student

    - (void) read { NSLog(@"read"); }

    - (void) write { NSLog(@"write"); }

    @end

    作用:

    1. 包含很多方法的声明.

    2. 可以将很多类公共的方法的声明抽取到一个协议中,让每个类遵守协议即可.

    使用场景:

    1. 限定变量指向的对象

    要求变量d指向的对象必须遵守PlayProtocol协议

    id<PlayProtocol> d = [[Person alloc] init]; //如果Person没有遵守PlayProtocol协议会警告

    @interface Person: NSObject <PlayProtocol>  //如果Person遵守PlayProtocol协议则OK

    @end

    2. 限定属性是具有某些协议的

    @property (nonatomic, strong) Dog<PlayProtocol> * dog;

    @interface Dog : NSObject <PlayProtocol>

    补充:

    设计模式./-->是一种手段,一种工具.可以使代码的写起来更方便
    1. 代理设计模式(委托设计模式)

    <1>. 监听器的场合

      对象B(保姆)想监听对象A(婴儿)的一些行为

    <2>. 通知的场合

      对象A(婴儿)发生了一些行为,想通知B(保姆)[B(保姆)为代理对象]

    <3>. 有些事情,不想自己处理,可以交给别人处理

      对象婴儿发生了一些事情,不想自己处理,交给保姆处理

    2. 代理设计模式的使用场合

      当对象A发生了一些行为,想告知对象B-->[让对象B成为对象A的代理对象]

      对象B想监听对象A的一些行为-->[让对象B成为对象A的代理对象]

      当对象A无法处理某些行为的时候,想让对象B帮忙处理-->[让对象B成为对象A的代理对象]

  • 相关阅读:
    黄聪:dreamweaver jquery代码提示安装,DW JQ代码智能提示
    明明白白AOP(你没有理由不心领神会!)
    myeclipse安装svn插件的多种方式
    spring注解
    freemarker入门例子
    MyEclipse10 中的两种FreeMarker插件的安装与配置
    优秀程序员必备的10个技能
    p2psearcher无法连接到KAD网络或ed2k服务器的解决办法
    MyEclipse 8.6.1下载|MyEclipse 8下载|MyEclipse 8.6.1官网下载
    网络技术网站
  • 原文地址:https://www.cnblogs.com/aunty/p/5118373.html
Copyright © 2011-2022 走看看