委托与协议

Delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。

Protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。

委托(Delegate)是面向对象的回调方法,委托提供了一个单一的对象来接收所有的事件消息。委托对象可以存储、操作、响应、转播相关的消息等等。

协议(Protocol)- 每一个对象的都可以有委托,并且有响应的协议(Protocol)定义对象可以向委托发送的消息。委托实现了协议中感兴趣的事件方法。当一个类实现了协议中的方法,我们说该类遵守协议。

协议(protocol)并不是一个类,而是一个方法列表。因此不能创建协议对象实例(instance),也不能有实例变量,且不能在协议中实现任何方法。相反,需要在遵守协议的委托类中实现这些方法。

一般对协议的命名为委托类+Delegate。

在协议中定义的方法,可以是required 或者 optional。默认情况下,协议方法是 required。如果使用 @optional 指令,则表示为可选方法。

委托与协议

时间: 2024-08-07 08:09:05

委托与协议的相关文章

详解Objective-C中委托和协议

Objective-C委托和协议本没有任何关系,协议如前所述,就是起到C++中纯虚类的作用,对于“委托”则和协议没有关系,只是我们经常利用协议还实现委托的机制,其实不用协议也完全可以实现委托. AD:[活动]Web和APP兼容性实战 Win10训练营免费报名 Objective-C中委托和协议是本文要介绍的内容,委托和协议是两个概念,协议实际上相当于C++中的纯虚类的概念,只定义并只能由其它类来实现.而委托类似于Java中的接口.(Objective-C实现委托这种机制是利用协议来实现的,这种说

? IOS 委托和协议区别和联系 (=)

IOS 委托和协议区别和联系 (=) 上一片大致说了一下IOS上面委托和协议的区别和联系,并且举了一个简单的例子,但是例子比较简单,今天做一个用委托模拟button回调的例子. 在一个自定义View上面放一个登陆按钮,并且这个LoginView里面有一个实现ILogin的委托对象,在登陆按钮的点击事件中调用需要实现的协议函数.在一个ViewController中实现ILgin协议,并实现login方法.将自定义LoginView放到ViewController中,这时候点击button按钮,回自

iOS中 委托 代理 协议 的理解

1.协议:协议不是类,是一种约定,他声明的方法和属性,都是独立于其他任何特定的类,并本身不会去实现他,让使用他的类去实现他,比如UITableView,需要实现他的cellForRowAtIndexPath等协议,谁用谁知道. 协议的两个预编译指令@optional:可以选择的方法.@required:必须执行的方法. 我们打开UITableView的头文件,看下他的声明: @protocol UITableViewDataSource<NSObject> @required - (NSInt

Objective-c 05 类别 类扩展 委托 非正式协议 协议 代码块 并发性 队列

类别 为已经存在的类添加行为时,通常采用创建子类的方法,不过有时子类并不方便, 比如:创建NSString的子类,但是NSString实际上只是一个类簇的表面形式.因而为这样的类创建子类会非常困难.在其他情况下, 也许可以创建它的子类,但是用到的工具集和库无法帮你处理新类的对象的.例如:当使用stringWithFormat:类方法生成新字符串时,你创建的 NSString类的新子类就无法返回.   利用Objective-C的动态运行时分配机制,可以为现有的类添加新的方法.这些新的方法在Obj

iOS delegate, 代理/委托与协议.

之前知知道iOS协议怎么写, 以为真的跟特么java接口一样, 后来发现完全不是. 首先, 说说应用场景, 就是当你要用一个程序类, 或者说逻辑类, 去控制一个storyboard里面的label, 发现如果直接用 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];//由storyboard根据myView的storyBoardID来

委托,协议(代理模式)

1.delegate 传值,传事件. 1.避免子类化带来的过多的子类以及子类与父类的耦合2.通过委托传递消息机制实现分层解耦 eg. 代理 #import <Foundation/Foundation.h> @class Children; @protocol ChildrenDelegate <NSObject> @required - (void)Eat:(Children *)children; @optional //.... @end 代理对象->保姆 .h @in

C++用纯虚函数实现协议委托的例子

??C++不像其他很多编程语言有接口.委托或者协议的概念,但是利用纯虚函数和C++多重继承的特性,我们也能实现接口.委托或协议要做的事情,下面的通过一个人设置闹钟然后被闹钟唤醒的例子来说明如何在C++中实现委托回调. #include <iostream> #include <vector> #include <unistd.h> using std::cout; using std::endl; // 前向声明 class Person; // 用纯虚函数实现一个协议

ios协议和委托

在iPhone开发协议和委托是常接触到的东西,到底什么是协议什么是委托,他们什么关系? 一 协议 (1)协议相当于没有与类相关联的接口,他申明一组方法,列出他的参数和返回值,共享给其他类使用,然后不进行实现,让用它的类来实现这些方法 (2)在任何一个类中,只有声明了协议,都可以实现协议里的方法. (3)协议不是一个类,更没有父类了. (3)协议里面的方法经常都是一些委托方法, 二 委托 委托,故名思议就是托别人办事.打个比方: 张三迫切需要一分工作,但是不知道去哪找.于是他就拜托(委托)李四给帮

Objective-C 委托、非正式协议、正式协议

一.概念:1.委托(delegate,也叫代理):当一个对象接受到某个事件或者通知的时候,会向它的Delegate对象查询它是否能够响应这个事件或者通知,如果可以,这个对象就会给它的Delegate对象发送一个消息(执行一个方法调用).在这种机制下,您可以不进行子类化和方法重载,而是将自己的定制代码放到委托对象中,从而避免对复杂对象进行修改.当您感兴趣的事件发生时,复杂对象会将消息发送给您定制的委托对象.您可以通过这种“挂钩”执行自己的定制代码,实现需要的行为.2.非正式协议(informal