协议(protocol) & 委托(delegate)

Protocol与Delegate 使用方法详解 你要知道的KVC、KVO、Delegate、Notification都在这里转载请注明出处 http://www.jianshu.com/p/eafa34abdad5本系列文章主要通过讲解KVC、KVO、Delegate、Notification的使用方法,来探讨KVO、Delegate、Notification的区别以及相关使用场景,本系列文章将分一下几篇文章进行讲解,读者可按需查阅。 KVC 使 阅读详情
协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。

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

举个浅显的例子:
           我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户
(1)(2)我自己全权负责,但是后面(3)(4)(5)我不想或者不方便自己做,所以我想找个助手(delegate)帮我做这些事,于是我定了一个招聘要求(Protocol),里写明我的助手需要会做(3)(4)(5)这三件事。很快,我招到一个助手。
        即:我.delegate = 助手;
于是以后每当我遇到需要测试程序或者接电话的活,我就把他转交给助手(delegate)去处理,助手处理完后如果有处理结果(返回值)助手会告诉我,也许我会拿来用。如果不需要或者没有结果,我就接着做下面的事。。

 协议(protocol),是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合。两个类进行通讯,用协议就比较方便。
     1.协议声明了可以被任何类实现的方法
     2.协议不是类,它是定义了一个其他对象可以实现的接口
     3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议。
     4.协议经常用来实现委托对象。一个委托对象是一种用来协同或者代表其他对象的特殊对象。
     5:委托,就是调用自己定义方法,别的类来实现。
     6.新特性说明
         @optional预编译指令:表示可以选择实现的方法
         @required预编译指令:表示必须强制实现的方法

代码示例:
1、ContactsCtrl.h

#import <UIKit/UIKit.h>

//定义协议
@protocol ContactCtrlDelegate
-(void)DismissContactsCtrl;
@end

@interface ContactsCtrl : UIViewController {
    IBOutlet UINavigationBar *ContactNavBar;
    id <ContactCtrlDelegate> delegate;
}
@property (nonatomic, assign) id <ContactCtrlDelegate> delegate;


-(IBAction)canCelBtn:(id)sender;
@end


2、ContactsCtrl.m

@implementation ContactsCtrl
@synthesize delegate;

- (void)viewDidLoad {
    [super viewDidLoad];
    ContactNavBar.topItem.prompt = @"选取联系人发送短信";
}


//调用协议中的方法
-(IBAction)canCelBtn:(id)sender{
    [delegate DismissContactsCtrl];
}


3、ProtocolDemoCtrl.h

#import <UIKit/UIKit.h>
#import "ContactsCtrl.h"
@interface ProtocolDemoCtrl : UIViewController <ContactCtrlDelegate>{//添加委托
    ContactsCtrl *contactsView;
}


4、ProtocolDemoCtrl.m

#import "ProtocolDemoCtrl.h"
#define BARBUTTONADD(SELECTOR) [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:SELECTOR] autorelease];

@implementation ProtocolDemoCtrl
@synthesize contactsView;

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.rightBarButtonItem = BARBUTTONADD(@selector(addContactAction:));
}


- (void)addContactAction:(id)sender{
    ContactsCtrl *contactView = [[ContactsCtrl alloc] initWithNibName:@"ContactsCtrl" bundle:nil];
    self.contactsView = contactView;
    contactsView.delegate = self;//设置委托
    [self presentModalViewController:contactsView animated:YES];
    [contactView release];    
}


//实现ContactCtrlDelegate协议中的方法
-(void)DismissContactsCtrl{
    [contactsView dismissModalViewControllerAnimated:YES];
}

原文来自:http://lizi464789754.blog.163.com/blog/static/168937085201121963817496/

  

蓝牙核心规范(V5.2)7.4-深入详解之AMP 蓝牙篇之蓝牙核心规范(V5.2)深入详解汇总 本部分指定了为备用MAC/PHY特性合并AMP管理器协议(A2MP)所需的规范的更改。 AMP管理器协议(A2MP)为一个设备提供了一种从另一个设备获取有关AMP功能的信息。每个设备都包含一个称为AMP管理器的抽象实体,该实体使用AMP管理器协议与另一个设备上的对等AMP管理器进行通信。 AMP管理实体具有以下职责和能力: 能够发现远程AMP管理器 能够发现可用的控制器 能够查询远程AMP控制器的信息 能够管理AMP物理链接 负责创建.. 阅读详情

相关推荐

STM32+HX711实战:5分钟搞定拉力传感器数据采集(附完整代码)

本文详细介绍了如何使用STM32微控制器和HX711模数转换器快速搭建高精度拉力测量系统。通过硬件连接指南、驱动实现代码和校准方法,帮助开发者在5分钟内完成拉力传感器数据采集,适用于工业自动化和消费电子等场景。

y7z8a9的博客 873

协议(protocol) & 委托(delegate)

协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。 委托(delegate),顾名思义就是委托别人办事,就是当 一件事情发生后,自己不处理,让别人来处理。 举个浅显的例子: 我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户 (1)(2)我自己全权负责,但...

diezhi9415的博客 169

Outlook邮件备份全攻略:从导出到导入的完整流程(附常见问题解决)

本文提供了一份详尽的Outlook邮件备份全攻略,涵盖从导出到导入的完整流程。重点解析了经典桌面版Outlook的.pst文件备份方法、进阶的智能筛选备份策略,以及如何通过导入恢复和工具验证确保备份可用。同时,文章还介绍了构建自动化备份体系与异地容灾的最佳实践,并附有常见问题解决方案,帮助用户建立可靠的邮件数据安全防线。

weixin_29248611的博客 890

5.6.3 通信->AMP(Accelerated Mobile Pages):AMP(Accelerated Mobile Pages) 协议架构(分层)

AMP 采用,从底层协议到上层应用层层约束与优化,整体分为,同时配套验证与缓存体系,形成完整的技术闭环。

weixin_41576682的博客 270

企业级AI Agent平台建设方案

本报告将深入剖析构成一个顶级AI Agent平台的各个功能层面,为构建者提供一份全面的战略蓝图。

分享AI和大数据领域的知识和研究 1582

SSE(Server-Sent Events)完整使用示例

本篇使用Node.js 作为服务端,在浏览器客户端演示SSE的完整实例和演示。实现了一个基于 Server-Sent Events (SSE) 的实时数据推送功能。

oscar999的专栏 750

ARP协议详解

ARP学习总结1.ARP出现原因ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。其作用是在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MA...

沉默的鹏先生 16万+

Ubuntu22.04安装ros(一键搞定)

然后发现可以一键安装,话不多说,直接终端输入如下指令。回车之后系统会自动安装ros。

m0_47313541的博客 7413

一 蓝牙概述 - 1.3 AMP概述

3 AMP概述Alternate MAC/PHYs (AMP)是蓝牙核心系统的次要控制器(secondary Controllers)。BR/EDR的主要控制器用作搜索,配对,连接建立,连接维持。当两个BR/EDR蓝牙设备L2CAP连接建立后,AMP管理器能检测到另外一个设备的AMP管理器。当两个蓝牙设备都有AMP控制器,蓝牙核心系统提供一种机制,让数据流从主要控制器迁移到次要控制器。每个AMP控制

冯天恩的博客 8777

akamai3简单分析

akamai流程的简单分析

记录一些web逆向的过程 916

使用Python实现深度学习模型:智能极端天气事件预测

在本项目中,我们成功利用Python和Keras库构建了一个基于LSTM的极端天气预测模型。通过时间序列数据,模型能够识别天气趋势并预测未来的极端天气事件。尽管这是一个简化的示例,但它为实际应用中如何利用深度学习进行天气预测提供了一个很好的基础。随着更精确的数据和更多的特征信息,类似的模型可以进一步扩展到其他极端事件预测上,如风暴预警、气象灾害评估等。

Echo_Wish 730

Delegate和protocol的理解

其实delegate常说委托,委托类。protocol协议,实现协议。 先阅读一下这篇文章: http://haoxiang.org/2011/08/ios-delegate-and-protocol/#comment-581 那么我们怎么理解它们呢? 文章中作者也说道,protocol就是Objective-c的一个语法罢了。 @protocol ClassADelegate

Chiuan的专栏 2557

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【IOS】委托(delegate)和协议(protocol)

iOS的委托模式之前也接触过,总觉得自己理解的不够透彻,使用时磕磕绊绊,今天做一个有关协议和委托模式的总结 协议(protocol) 由于Objective_C的类不支持多继承,而类在实现时很多相似的方法,所以我们把某个类应该实现的一系列方法定义在一个叫协议(Protocol)的特性里面,若某类遵循了此协议(Protocol),就可以实现该协议(Protocol)里包含的方法,但并不一定要全部实现Protocol里声明的方法,其方法的实现一般都是可选的(@optional),若检查@optional的方法是

YUANdeboke的博客 2739

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

关于委托delegate和协议protocol的讲解

看了不少关于委托和协议的讲解,我觉得下面这篇是说的最清楚的。 Objective-C中委托和协议是本文要介绍的内容,委托和协议是两个概念,协议实际上相当于C++中的纯虚类的概念,只定义并只能由其它类来实现。而委托类似于Java中的接口。(Objective-C实现委托这种机制是利用协议来实现的,这种说法我现在认为是不对的,理由下述:)。 Objective-C委托和协议本没有任何关

曲奇 628

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

iOS-Protocol(协议)和Delegate(代理)

1.基础原理 我们平时说的代理其实分为Protocol(协议)和Delegate(代理)两个部分。 协议不是代理,代理不是协议。 协议是多个类之间协商的一个公共接口,这个公共接口提供一系列方法的声明给其他类使用。 代理是协议的应用机制。 代理通俗来说就是我自己不方便去做的一些事(协议里定义的方法),我需要委托其他人来做这些事。我就是委托方,对方就是被委托方。 举个栗子: 一个View...

SunSatan的博客 637

协议(Protocol)与委托代理(Delegate)

协议(Protocol)与委托代理(Delegate) 协议(Protocol)的作用: 1. 规范接口,用来定义一套公用的接口; 2. 约束或筛选对象。   代理(Delegate): 它本身是一种设计模式,委托一个对象&amp;lt;遵守协议&amp;gt;去做某件事情,目的是为了降低对象间的耦合度;或用来逆向传值。   一、定义一套公用接口 ...

IF 226

delegate 与 protocol

protocol和delegate完全不是一回事,放在一起说,只是因为我们经常在同一个头文件里看到这两个word。 协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。 委托(delegate),顾名思义就是委托别人办事,就是当 一件事情发生后,自己不处理,让别人来处理。 举个浅显的例子: 我上班的工

qingjoin1的专栏 441

协议与委托(Protocol and Delegate)实例解析

文/Jinlong Wei 1 协议: 协议,类似于Java或C#语言中的接口,它限制了实现类必须拥有哪些方法。 它是对对象行为的定义,也是对功能的规范。 示例: // GoodChild.h #import Foundation/Foundation.h 文/Jinlong Wei 1 协议: 协议,类似于Java或C#语言中的接口,它限制了实现类必须拥有哪些方法。

xiao771737的专栏 1346

关于swift的delegate和protocol

delegate:委托,代理 类中有属性,方法,事件 delegate与事件有关 protocol:协议,与类相似,但是其中属性,方法,事件没有具体内容 当class遵守协议之后,需要实现这个协议中的某一些函数。 delegate的使用 例如在获取地址的方法里 import CoreLocation class ViewController: UIViewController,CLLocation...

CQUPT—ZHX 796

IOS开发-Protocol协议及委托代理(Delegate)传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做,它不关心。   当一个类要使用某一个Protocol(协议)时,都必须要遵守协议。比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来提醒你没有遵守××协议。注意,我这里说的

zhuobi0的专栏 458

[IOS]Protocol协议及委托代理(Delegate)传值-用代码寻找storyboard相应视图

Protocol协议及委托代理(Delegate)传值前言:因为Swift是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做,它不关心。理解当一个类要使用某一个Protocol(协议)时,都必须要遵守协议。比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来

stary_yan的博客 1333

协议与委托(Protocol and Delegate)

协议就相当于是C++中的纯虚基类,它只能定义函数并且只能由其他类来实现。而委托则类似于Java接口,其实协议和委托之间并无必然联系,只是在Obj—C中常用协议来实现委托。         protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。         delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不

果汁的专栏 1441

delegate和protocol

protocol和delegate完全不是一回事,放在一起说,只是因为我们经常在同一个头文件里看到这两个word。   协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。   委托(delegate),顾名思义就是委托别人办事,就是当 一件事情发生后,自己不处理,让别人来处理。   举个浅显的例子:            我上班的工...

Just Code 267

Protocol and Delegate 协议和代理(设计模式之代理模式)

delegate 和 protocol 是OC语法的一部分,protocol(协议)我的理解就是定义这么一个东西。以后就按这里的规定来办事。delegate(委托)  就是把事情委托给别人去办。  @required 就是必须去办的。 @optional则是可做或不做。 1.protocol(协议) 首先我定义一个叫GoodChild的协议 代码 // GoodChild.h #

dyj1987chen的专栏 489

IOS Protocol与Delegate详解(一)

我所认为的Protocol(协议)是类似于java中的接口这一概念的,所谓协议,可以理解成一个类所具有的方法的特征集合,协议也属于面向对象的一部分,使用它,可以弥补类的不能多继承缺点,继承和协议的双重设计既保持了类的数据安全也变相实现了多继承   这里的Protocol(协议,也算是java的接口),我始终认为其大致可以分为两种情况: 1.调用协议  2.回调协议      1.调用

wingsofPiano的博客 2093
上一篇: &lt;转&gt;RestKit在iOS项目中的使用,包含xcode配置说明
下一篇: URL Scheme 应用示例(双向openURL实现,调用特定的其他应用程序)
威尚
博客等级 码龄17年 13粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值