zoukankan      html  css  js  c++  java
  • OC-协议与代理

    【协议】================================================================

    @protocol

    【协议的作用】:规定了需要实现的接口方法,在委托方和代理方都需要遵从的一个协议。

    委托方通过(nt.delegate = self;)这种方式进行委托【注,不仅可以委托自己,也可以委托其他的类】

    代理方通过([_delegate test];)这种方式进行方法的代理(替...干了....)

    【例如】:

    小明是委托方,小刚是代理方。他们之间都遵从一个协议。协议中规定了2个方法(功能);小明把自己委托给了小刚,小刚则拥有了指向小明的对象的指针,通过这个指针可以访问小明的任何方法(必须是协议中规定的方法)

    【注】协议中的方法有如下2中权限

    1.@required//委托方(小明)必须实现这个方法

    2.@optional//委托方(小明)可以实现,也可以不实现这个方法

    【注】@required要求的方法如果不实现,则会提示警告,@optional如果不实现,则没有任何问题。

    【注】使用哪个协议,必须包含协议的头文件。

    【代理和协议的添加方式】

    1.包含头文件

    2.在委托方添加协议,然后实现协议方法

    3.在代理方实现代理对象变量。

    4.在委托方,给代理对象变量赋值

    5.在需要用到的地方,通过代理对象的变量,去访问委托的方法。

    【协议和代理用处】

    例如商品页的商品购买,但是用户没登陆,需要先登陆,登陆成功后,需要把状态告诉商品页,商品页判断登陆状态,然后继续进行下一步操作。【注】登陆页就是在商品页中创建出来的一个对象;【代理的回调】

    【协议和代理局限性】

    只能是2个相关联的类之间进行数据的互相访问。

    【例如】小明委托小刚干什么;小刚委托小红干什么

    【respondsToSelector方法】

    作用:使代码更安全,防止崩溃

    //判断OutPutPersonInfo 方法是否存在,存在跳入方法

        if([_woshidaili respondsToSelector:@selector(OutPutPersonInfo:)])

        {

            [_woshidaili OutPutPersonInfo:@"我是小刚"];

        }

  • 相关阅读:
    Unity游戏开发之AR增强现实技术入门
    python3快速入门
    大数据Hadoop入门到精通 (精品课程)
    JavaScript基础训练营
    我的超级工具
    html5 postMessage 实现类似 sendMessage 的同步效果,支持跨域
    Centos7-驱动小米WIFI做AP
    rz快速上传文件到ssh服务器
    Ansible批量修改root密码
    ArcGIS API for JavaScript 入门教程[0] 目录
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/5330683.html
Copyright © 2011-2022 走看看