协议(Protocol)的用法和代码例子

swift 协议Protocol的基本用法 protocol(协议)用户统一方法和属性的名称,而不实现任何功能,我相信很多学过ios的对protocol都不会陌生,swift中的protocol不仅定义方法还能定义属性。本文简单的实现了swift协议方法的具体方法,只是想记载一下,如果还要更深入的了解protocol方法,可以看看swift中的官方文档。下面就是protocol的具体代码的一些实现。 //  PersonViewC 阅读详情

 

http://www.cocoachina.com/newbie/basic/2010/0917/2106.html

 

协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合。两个类进行通讯,用协议就比较方便。下面是 CocoaChina 版主“angellixf”为新手写的协议入门介绍以及代码例子,希望对刚入门开发者有所帮助

一、说明
  1.协议声明了可以被任何类实现的方法
  2.协议不是类,它是定义了一个其他对象可以实现的接口
  3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议。
  4.协议经常用来实现委托对象。一个委托对象是一种用来协同或者代表其他对象的特殊对象。
  5:委托,就是调用自己定义方法,别的类来实现。
  6.新特性说明
    @optional预编译指令:表示可以选择实现的方法
    @required预编译指令:表示必须强制实现的方法

二、定义

.h
@protocol ContactCtrlDelegate
-(void)DismissContactsCtrl;
@end

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


.m
@synthesize delegate;


三、例子

例如:UITextView
@protocol UITextViewDelegate <NSObject>

@optional

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;

- (void)textViewDidBeginEditing:(UITextView *)textView;
- (void)textViewDidEndEditing:(UITextView *)textView;

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidChange:(UITextView *)textView;

- (void)textViewDidChangeSelection:(UITextView *)textView;

@end

  如果要调用以上这些方法,就必须设置UITextView的委托:TextView.delegate = self;


四、Demo

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;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (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;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (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];
}

nginx和proxy_protocol协议 本文详细介绍了nginx对proxy_protocol协议的支持,以及如何进行配置来开启proxy_protocol协议功能 阅读详情

相关推荐

iOS从入门到精通之 :协议(protocol)

Hello 大家好,我是Stefan,今天给大家带来的时iOS编程中非常重要的一个知识要点:协议 1.1 什么是协议  1.1.1 协议基本概念 《倚天屠龙记》中,峨眉派的纪晓芙因为爱上了明教光明右使杨逍,违反了峨眉派“不得与魔教人士往来”的条规,最终被灭绝师太一掌毙命,香消玉殒。可惜一位绝世佳人,却因为条条框框的门规协定而枉送了性命。 iOS编程中的协议其实也是如此,iOS里面协议不是类

郭胜龙的技术博客 9248

HTTP:header头总结

端到端标头:逐跳报头客户端发送请求时,用来指定服务器的域名。有了字段,就可以将请求发往「同一台」服务器上的不同网站。作用:语法: 举例:作用:补充:举例:作用:语法: 补充: 举例:使用流程: 服务器在 Content-Encoding 响应首部提供了实际采用的压缩模式: 需要注意的是,服务器端并不强制要求一定使用何种压缩模式。采用哪种压缩方式高度依赖于服务器端的设置,及其所采用的模块。 Connection字段 作用:语法: close:表明客户端或服务器想要关闭该网络连接,这是HTTP/1.

OceanStar的博客 5050

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

Protocol Buffers 3.0 技术手册

转载请标明出处:http://blog.youkuaiyun.com/shensky711/article/details/69696392 本文出自: 【HansChen的博客】 简介 proto3语法 定义一个 Message 定义多个 message 类型 定义变量类型 分配Tag 指定变量规则 注释 保留变量不被使用 默认值 定义枚举 Enumerations 如何引用其他 pro...

HansChen的博客 2万+

西门子S7-1200 PLC与伺服电机控制实战解析

工业自动化控制系统中,PLC(可编程逻辑控制器)与伺服电机的协同工作是实现精密运动控制的核心技术。通过PROFINET工业以太网协议,PLC可以高效地控制多台伺服电机,实现定位、同步和插补等复杂运动。在实际工程应用中,硬件组态的正确配置和运动控制算法的优化是关键挑战。本文以西门子S7-1200 PLC控制五台伺服电机的项目为例,详细介绍了从硬件组态、运动控制程序实现到HMI界面设计的全流程。特别针对多轴同步插补运动、动态速度曲线调整等特殊工艺需求,提供了实用的解决方案和调试技巧,为工业自动化领域的工程师提供

weixin_30252709的博客 497

PID控制参数整定(调节方法)原理+图示+MATLAB调试

序 首先最重要的是了解每个参数调节了系统响应的那些属性,通过观察响应从而调节参数改变属性。 PID的作用概述: 1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。 2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。 3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。 同时调节的顺序是:P>I>D 下面了解的一个很重要的就是调节的目标,也就是最好的响应曲线.

viafcccy的博客 16万+

【协议protocol的基本使用 Objective-C语言】

协议protocol的基本使用 Objective-C语言

madoca的博客 888

linux 内核vxlan收发包流程

1.vxlan口收包处理流程 前面几章详细介绍了vxlan接口的使用,而且已经知道vxlan是 MAC IN UDP中的封装,因此,在解封装之前,一切按照原有流程走,在此复习一下内核收发包流程(驱动层的数据处理这次不再解析,直接从__netif_receive_skb_core开始) #物理网卡处理中断,触发softirq i40e_intr └─napi_schedule_irqoff #i40e softirq把包放到per cpu backlog,触发softirq i40e_napi_p

魏言华的博客 3826

protocol的简单写法

1 // 2 // TouchView.h 3 // LessonUIControlAndSubClass 4 5 6 7 #import <UIKit/UIKit.h> 8 9 @class TouchView; 10 //1.制定协议,协议名字格式:类名+Delegate 11 @protocol TouchViewD...

adqarcl231082的博客 873

【YOLOv8全方位学习手册】第四章 数据增强:从扩充数据到塑造模型的认知边界

"""使用 Albumentations 做自定义增强,兼容 YOLO 格式"""])# 转成 numpy# boxes 必须是 [[x_min,y_min,x_max,y_max], ...]# 在数据加载时调用你可以把集成到 PyTorch 的 Dataset 类里,或使用 Ultralytics 自带的DataLoader。

VectorShift的博客 211

损失函数大汇总(八)(IoU Loss附公式推导与代码)

本文详细介绍了IoU Loss及其在图像分割中的应用。IoU(交并比)是衡量预测区域与真实区域重叠程度的指标,IoU Loss定义为1-IoU,直接优化区域重叠质量。文章推导了IoU的数学表达式和梯度计算,分析了其函数特性:全局耦合梯度、对漏检误检的双重惩罚、适合类别不平衡任务。与Dice Loss相比,IoU更强调覆盖质量而非相似度。实际应用中IoU Loss常与BCE组合使用,前者保证训练稳定性,后者优化整体区域质量。文章还提供了IoU Loss的代码实现,适用于二值分割、小目标提取等场景,特别当任务评

悦学共鸣,温柔以待,汇聚光芒,共同成长 414

ProtocolBuffer入门和使用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wHRIablp-1681966664637)(ProtocolBuffer.assets/image-20220614102631349.png)](基本和go的内置数据类型是一一映射,除了没有map)(基本和go的内置数据类型是一一映射,除了没有map)

wspppdy的博客 976

11. 使用 HTTP PUT, PATCH 以及 MERGE 请求消费 SAP ABAP OData 服务修改操作的实现及其区别

使用 SAP ABAP SEGW 事物码实现 OData 服务的修改操作时,对于消费端通过 PATCH/MERGE 和 PUT 这三种不同类型的 HTTP 请求触发的场景,我们应该在 UPDATE_ENTITY 方法里用 IF 分支分别进行处理,原因就在于 GET_ENTITY 方法是否在修改处理逻辑的过程中被触发。......

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2462

协议(Protocol)的用法和代码例子 有demo

http://www.jouhu.com/blog/?p=2827

lsk_jd的专栏 870

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

协议(Protocol)的用法和代码例子 摘

协议(Protocol)的用法和代码例子 时间: 2010-09-17 13:12 协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合。两个类进行通讯,用协议就比较方便。下面是 CocoaChina 版主angellixf为新手写的协议入门介绍以及代码例子,希 协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合。两个类进行通讯,用协议就比较方便。下面是 CocoaChina 版主“angellixf”为新手写的协议入门介绍以及代码例子,希望对刚入门开发者有所帮助

top123xcode的专栏 3787

蓝牙模块HM-10手册

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

协议(Protocol)的用法和代码例子

协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合。两个类进行通 讯,用协议就比较方便。下面是 CocoaChina 版主“angellixf”为新手写的协议入门介绍 以及代码例子,希望对刚入门开发者有所帮助 一、说明 1.协议声明了可以被任何类实现的方法 2.协议不是类,它是定义了一个其他对象可以实现的接口 3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那

大萝卜 948

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

协议(Protocol)的用法和代码例子 ios

协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合。两个类进行通讯,用协议就比较方便。下面是 CocoaChina 版主“angellixf”为新手写的协议入门介绍以及代码例子,希望对刚入门开发者有所帮助 一、说明   1.协议声明了可以被任何类实现的方法   2.协议不是类,它是定义了一个其他对象可以实现的接口   3.如果在某个类中实现了协议中的某个方法,也就是这个类

上海-相奇 博客技术资源分享 1002

iOS中使用协议(protocol)的用法

协议在ios中是和代理一块成双成对的使用的.在后面的UI阶段我们会经常遇见,如,datable... 如何定义一个自己的协议尼.列位上眼呐! 1.协议的表示:@protocol 2.如何创建一个协议文件步骤如下: New File->OS X ->Cocoa ->Objective-c protocol.然后输入一个协议的名称.可以随便起.咱们这里叫(CarsStandar...

whuizhou的专栏 4809

Swift Protocol 详解 - 协议&面向协议编程

Swift Protocol 详解 - 协议&面向协议编程 之前一个帖子我总结了自己秋招面试经历,作为一个Swift开发者,有一个非常高频的问题就是:你觉得Swift相比于其他语言(或者OC来说)的特点和优势是什么?作为一个见识短浅的小白来说,这个问题实在是不知如何下手啊。这篇文章,也只是从一个小的角度切入,谈一谈Swift中的协议Protocol 和 Protocol Oriented ...

快乐的工程师的博客 2319
下一篇: audio file stream
whichapple
博客等级 码龄16年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值