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:@"我是小刚"];
}
OC-协议与代理的更多相关文章
- OC协议、代理的简单使用
在不同类之间传递数据,我所学到的有三种,1.代理,2.block,3.通知.在这里,我们先来讲一下代理的使用,后面我会继续讲到block和通知.代理通常和协议是一起使用的,协议通常写在代理类里面,被代 ...
- OC第九节——协议与代理
一.理解协议与代理 协议: 协议就是需要相互遵守的约定.规范:需要去实现协议中规定的方法. 代理: 代理是一个概念,很难用一个名词去定义(如我们可以说协议其实就是一个方法列表).它更像是一种关系,我要 ...
- Protocol and Delegate协议和代理
1.什么是协议? OC协议仿照Java的接口.协议和接口,都是不同类的对象之间一种通信的机制.2.协议的基础语法 单纯的语言描述协议的语法,很难让人理解,主要因为在OC中协议是类对象的通信机制,他 ...
- OC中的代理模式
OC中的代理模式,关于代理模式,如果还有同学不太清楚的话,就自己去补充知识了,这里就不做介绍了,这里只介绍OC中是如何实现代理模式的.这里举一个简单的例子:小孩类,护士类,保姆类,其中小孩类有两个方法 ...
- C++模拟实现Objective-C协议和代理模式
Objective-C的协议和代理是运用最多的特性之一,可以说在苹果系列开发中无处不在.事实上很多人都不知道其背后的原理.事实上简单点说,这就是设计模式中的代理模式的经典运用.代理模式简单点说就是为其 ...
- OC 协议
OC 协议 概念:定义了一个接口,其他类负责来实现这些接口.如果你的类实现了一个协议的方法时,则说该类遵循此协议. 非正式协议:非正式协议虽名为协议,但实际上是挂于NSObject上的未实现分类(Un ...
- 【转】fiddler-http协议调试代理工具
题目有一些激进.但是在前端界打滚了这么多年,fiddler一直都是陪着我走过来了.它就是一个抓包神奇,代理神器.它的厉害之处,我简单地说一下,希望你们看了以后,能点上32个赞. 1.fiddler为何 ...
- HTTP协议 (五) 代理
HTTP协议 (五) 代理 阅读目录 什么是代理服务器 Fiddler就是个典型的代理 代理作用一:FQ 代理作用二:匿名访问 代理作用三:通过代理上网 代理作用四:通过代理缓存,加快上网速度 代理作 ...
- Socks协议以及代理转发工具分析
前言:最近两场HW都和某师傅学到了挺多东西,算是对内网不出网以及流量代理做个分析(SOCKS协议,reGeorg原理分析,frp的代理,CS上的代理 SOCKS SOCKS(Socks:Protoco ...
- 黑马程序猿_ 利用oc的协议实现代理模式
先说下代理模式是什么吧 定义: 为其它对象提供一种代理以控制对这个对象的訪问.在某些情况下,一个对象不适合或者不能直接引用还有一个对象 而代理对象能够在client和目标对象之间起到中介的作用. 在看 ...
随机推荐
- lucene实现初级搜索引擎
一.系统设计 搜索引擎项目代码主要分为三个部分,第一部分是构建索引,全文检索:第二部分是输入问题,对问题进行分词.提取关键词.关键词扩展:第三部分是将搜索结果输出到GUI图形用户界面. 二.搜索引擎 ...
- 吴超老师课程--Flume的安装和介绍
常用的分布式日志收集系统
- python 测试代码
1.使用print()打印 测试代码最简单的就是添加一些print()语句.然而产品开发中,需要记住自己添加的所有print()语句并在最后删除,很容易出现失误. 2.使用pylint.pyflake ...
- C#:当前时间转换成文件名
DateTime.Now.ToFileTime().ToString(); 结果是一个字符串,类似:131238643554094913.
- HDU 3966 Aragorn's Story (树链剖分入门题)
树上路径区间更新,单点查询. 线段树和树状数组都可以用于本题的维护. 线段树: #include<cstdio> #include<iostream> #include< ...
- GIT使用—安装配置及工作流程
一.Git 与 SVN 区别 GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 1.GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CV ...
- 并发-Synchronized底层优化(偏向锁、轻量级锁)
Synchronized底层优化(偏向锁.轻量级锁) 参考: http://www.cnblogs.com/paddix/p/5405678.html 一.重量级锁 上篇文章中向大家介绍了Synchr ...
- 如何查看eclipse、mysql的版本 - 原创
Eclipse 1)如果实在官网下载的,看压缩包名字就可以看出来,只带有win32字样的是32位,带有win32-x86_64字样的是64位的. 2)找到eclipse安装目录的eclipse.ini ...
- 数字组合问题:Combination,CombinationSum,CombinationSum2,CombinationSum3
Combination问题描述:给定n和k,找出1-n之间所有k个数的组合,例如:n=3,k=2,返回 [[1,2] [1,3] [2,3]] 算法分析:利用递归.递归边界就是curr.size( ...
- 入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 术语(二)
你应该知道的在文档和对象模型中使用一些特定的术语: OpenID Connect Provider (OP) 授权服务器 Thinktecture IdentityServer v3 是一个.NET ...