Protocol

Protocol(协议):协议就是我定的一些方法,找一个人来帮我实现.协议里的方法有两种一种

(@required)必须执行,第二种(@optional)可选择性执行.

协议只是一堆方法的声明,也就是说协议只有.h文件,没有.m文件,谁遵守协议,谁就要实现协议里的规定的方法.协议通常与代理一起出现.

创建协议文件

Object-C protacol

生成ProtacolName.h

@protocol ProtacolName<NSObject>

@required

//必需实现的方法

@optional

//选择性实现的方法

@end;

有Protocol(协议)必需有delegate(代理).通俗来讲就是代理商,主要的任务是帮你完成一些任务.

首先创建一个类对象

xxx.h

@interface xxx : NSObject

{

//创建一个实例变量.

//为实例变量创建一个代理

id<ProtocolName> _代理变量名

}

//声明实例变量set/get方法

//同样也要声明代理变量的set/get方法

//实例变量初始化

//注意代理变量不需要初始化

//声明一些实例变量方法

//声明需要代理完成的方法

@end;

xxx.m

@implementation xxx

//实现实例变量set/get方法

//实现代理的set/get方法

- (void)setDelegate:(id<ProtocolName>)delegate

{

_delegate = delegate;

}

- (id<ProtocolName>)delegate

{

return _delegate;

}

//实现方法

//实现需要代理完成的方法

- (void)methodName

{

[_delegate ProtocolMethod];

}

@end;

时间: 2024-10-17 06:31:42

Protocol的相关文章

Netty对Protocol Buffer多协议的支持(八)

Netty对Protocol Buffer多协议的支持(八) 一.背景 在上篇博文中笔者已经用代码演示了如何在netty中使用Protocol Buffer,然而细心的用户可能会发现一个明显的不足之处就是,我们的Handler只能处理一种特定的类型,而我们的项目中又不可能只有一种类型,那么这个问题该怎么解决了?多的不说,笔者直接上代码. 二.代码实现 2.1 message的编写 syntax = "proto2"; package com.rsy.netty.protobuf; op

OC中protocol、category和继承的区别

利用继承,多态是一个很好的保持"对扩展开放.对更改封闭"(OCP)的办法,也是最常见的一种方法.Objective C还支持另外两种语法来支持OCP:Protocol和Category.Protocol只能定义一套接口,而不能提供实现,变相的也是一种Abstract class的实现方式(oc 语法上本身不支持抽象基类).Category可以为类提供额外的接口和实现.那么到底三者(继承, Protocol,Category)在使用上到底有什么本质的区别呢?在我看来,protocol的作

Redis Protocol specification

Redis Protocol specification Redis clients communicate with the Redis server using a protocol called RESP (REdis Serialization Protocol). While the protocol was designed specifically for Redis, it can be used for other client-server software projects

Protocol其他用法

1.protocol 的使用注意 1)Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现. @protocol SportProtocol <NSObject> { int _age; // 错误写法 } - (void)playFootball; - (void)playBasketball; @end 2)只要父类遵守了某个协议,那么子类也遵守. @protocol SportProtocol <NSObject> - (void)playFoo

Protocol类型限制

1.protocol类型限制 设定情景: 某攻城狮A希望找一个会做饭.洗衣服的女生做女朋友,有国企工作的优先. 满足条件的女生都可以向他发送消息 从题目中我们得到要求 会做饭 会洗衣服 有份好工作 @protocol WifeCondition<NSObject> - (void)cooking; - (void)washing; - (void)job; @end 如何在代码中要求对象必须具备这些行为? 数据类型<协议名称> 变量名 // 如果没有遵守协议则会报警告 id<

Ggoogle Protocol Buffer的使用 (基于C++语言)

首先说明的是Protocol Buffle是灵活高效的.它的一个很好的优点(很重要的,我认为)就是后向兼容性--当我们扩展了了.proto文件后,我们照样可以用它来读取之前生成的文件. 下面的例子,为了实现我们的一个应用 :通讯录,它包含一个人的名字,ID,电子邮件,联系电话,并实现存储与读取. 第一步,定义一个 .proto 文件 /* 首先是一个 package名称的声明,它的作用就是防止出现名字的冲突: 当生成C++代码的时候,对应的pacage名称会生成一个相同名字的命名空间. */ p

Simple Mail Transfer Protocol

https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol https://zh.wikipedia.org/wiki/简单邮件传输协议 Simple Mail Transfer Protocol (SMTP) is an Internet standard for electronic mail (email) transmission. First defined by RFC 821 in 1982, it was last up

Protocol buffer序列化及其在微信蓝牙协议中的应用

Protocol buffer是Google出品的一种轻便高效的结构化数据存储格式,可对结构化数据进行序列化,并具有语言无关.平台无关等特点,在通信协议和数据存储等领域已经得到广泛的应用.目前其已经提供 C/C++.Java.Python 等语言的 API. 一.Protocol buffer和XML 在数据通信传输时,一般需要将结构化的数据序列化成流进行传送,接收方再反序列化为原始格式数据进行处理.在Web通信领域,XML应用算是最通用的了.在时间性能上,虽然XML的序列化开销还可以,但是反序

iOS Category 和 Protocol 中的 Property 你们真的会了么?

一.property 合成存取器: @property的格式: 1 @property (修饰列表) 变量类型 变量名; Xcode4.4之前: @property使编译器自定生成set/get方法声明. @synthesize自动生成set/get方法的实现 @synthesize还会自动生成私有成员变量 Xcode4.4以后: 不用再写@synthesize,编译器通过@property就能给我们生成set/get方法的声明和实现,默认生成成员变量:_propertyName 用@prope

OC基础--分类(category) 和 协议(protocol)

OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低,导致了分类文件和协议文件没有找到,最后百度得知: 如图:Xcode 7.2版本中的category文件和protocol文件都归类到了Objective-C File 中   一.category文件: 作用:可以扩展自定义类,或者系统类.下面的实例,是扩展了NSString 类,在类中扩展了计算字