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

@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:@"我是小刚"];

}

OC-协议与代理的更多相关文章

  1. OC协议、代理的简单使用

    在不同类之间传递数据,我所学到的有三种,1.代理,2.block,3.通知.在这里,我们先来讲一下代理的使用,后面我会继续讲到block和通知.代理通常和协议是一起使用的,协议通常写在代理类里面,被代 ...

  2. OC第九节——协议与代理

    一.理解协议与代理 协议: 协议就是需要相互遵守的约定.规范:需要去实现协议中规定的方法. 代理: 代理是一个概念,很难用一个名词去定义(如我们可以说协议其实就是一个方法列表).它更像是一种关系,我要 ...

  3. Protocol and Delegate协议和代理

    1.什么是协议?  OC协议仿照Java的接口.协议和接口,都是不同类的对象之间一种通信的机制.2.协议的基础语法  单纯的语言描述协议的语法,很难让人理解,主要因为在OC中协议是类对象的通信机制,他 ...

  4. OC中的代理模式

    OC中的代理模式,关于代理模式,如果还有同学不太清楚的话,就自己去补充知识了,这里就不做介绍了,这里只介绍OC中是如何实现代理模式的.这里举一个简单的例子:小孩类,护士类,保姆类,其中小孩类有两个方法 ...

  5. C++模拟实现Objective-C协议和代理模式

    Objective-C的协议和代理是运用最多的特性之一,可以说在苹果系列开发中无处不在.事实上很多人都不知道其背后的原理.事实上简单点说,这就是设计模式中的代理模式的经典运用.代理模式简单点说就是为其 ...

  6. OC 协议

    OC 协议 概念:定义了一个接口,其他类负责来实现这些接口.如果你的类实现了一个协议的方法时,则说该类遵循此协议. 非正式协议:非正式协议虽名为协议,但实际上是挂于NSObject上的未实现分类(Un ...

  7. 【转】fiddler-http协议调试代理工具

    题目有一些激进.但是在前端界打滚了这么多年,fiddler一直都是陪着我走过来了.它就是一个抓包神奇,代理神器.它的厉害之处,我简单地说一下,希望你们看了以后,能点上32个赞. 1.fiddler为何 ...

  8. HTTP协议 (五) 代理

    HTTP协议 (五) 代理 阅读目录 什么是代理服务器 Fiddler就是个典型的代理 代理作用一:FQ 代理作用二:匿名访问 代理作用三:通过代理上网 代理作用四:通过代理缓存,加快上网速度 代理作 ...

  9. Socks协议以及代理转发工具分析

    前言:最近两场HW都和某师傅学到了挺多东西,算是对内网不出网以及流量代理做个分析(SOCKS协议,reGeorg原理分析,frp的代理,CS上的代理 SOCKS SOCKS(Socks:Protoco ...

  10. 黑马程序猿_ 利用oc的协议实现代理模式

    先说下代理模式是什么吧 定义: 为其它对象提供一种代理以控制对这个对象的訪问.在某些情况下,一个对象不适合或者不能直接引用还有一个对象 而代理对象能够在client和目标对象之间起到中介的作用. 在看 ...

随机推荐

  1. 安装MySQL版本为mysql-installer-community-5.7.17.msi

    双击MySQL安装包, 勾选复选框,点击下一步: 选择仅仅服务器模式,点击下一步: 直接点击执行: 执行完成,点击下一步: 确认配置,点击下一步: 输入用户名和密码,点击下一步: 默认选项,点击下一步 ...

  2. 010-JDK可视化监控工具-VisualVM

    一.概述 VisualVM是一个集成多个JDK命令行工具的可视化工具.VisualVM基于NetBeans平台开发,它具备了插件扩展功能的特性,通过插件的扩展,可用于显示虚拟机进程及进程的配置和环境信 ...

  3. Android学习六---OpenCV for android samples

    搭建好OpenCV4Android环境后,就要着手开发自己的应用了.对于一个没有OpenCV基础的人来开发OpenCV应用确实有点难度,不过我们可以从samples里学起,结合javadoc和万能的网 ...

  4. 转:.Net 中的反射(反射特性) - Part.3

    .Net 中的反射(反射特性) - Part.3 反射特性(Attribute) 可能很多人还不了解特性,所以我们先了解一下什么是特性.想想看如果有一个消息系统,它存在这样一个方法,用来将一则短消息发 ...

  5. SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用

    SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...

  6. java基础知识框图

  7. Kotlin学习记录3

    参考我的博客:http://www.isedwardtang.com/2017/09/04/kotlin-primer-3/

  8. [转]HBase hbck——检察HBase集群的一致性

    Hbase提供了hbck命令来检查各种不一致问题.hbck的名字仿效了HDFS的fsck命令,后者是一个用于检查HDFS中不一致问题的工具.下面这段非常易懂的介绍出自于hbck的源程序. 检查数据在M ...

  9. 手动漏洞挖掘-SQL注入(安全牛笔记)

    substring_index(USER(),"@",l)-- #是将查询出来的结果进行切分,以@符号的方式切分 ’ union select table_name,table_s ...

  10. SQL-ALTER-change和modify区别

      ALTER 对于列的应用:   1.更改列名      格式:CHANGE old_col_name new_col_name column_definition      保留old和new列名 ...