什么是Protocol

Protocol翻译过来,叫做”协议“

Protocol的作用

  • 用来声明一些方法
  • 也就说,一个Protocol是由一系列的方法声明组成的

任何类只要遵守了Protocol,就相当于拥有了Protocol得所有方法声明

Protocol的定义

  • @protocol 协议名称
  • // 方法声明列表
  • @end

类遵守协议

  • interface 类名 :父类 <协议名称1,协议名称2,...>
  • @end

协议中有2个关键字可以控制方法是否要实现(默认是@required,在大多数情况下,用途在于程序员之间的交流)

  • @required:这个方法必须要实现(若不实现,编译器会发出警告)
  • @optional:这个方法不一定要实现

一个协议可以遵守其他多个协议

一个协议遵守了其他协议,就相当于拥有了其他协议中的方法声明

  • @protocol 协议名称<协议1,协议2>
  • @end

NSObject是一个基类,最根本最基本的类,任何其他类最终都要继承它

还有名字也叫NSObject的协议,它是一个基协议,最根本最基本的协议

NSObject协议中声明很多最基本的方法

  • description
  • retain
  • release

建议每个新的协议都要遵守NSObject协议

时间: 2024-10-07 23:22:59

什么是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 类,在类中扩展了计算字