一起Talk IOS吧(第二十二回 OC中的协议概述)

2024-03-12 03:48

本文主要是介绍一起Talk IOS吧(第二十二回 OC中的协议概述),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看官们,我们在前面章回中介绍了面向对象的三个主要内容,本章回中我们将面向对象的另外一个知识点:协议。

协议综合了封装与继承的特性,在IOS编程中使用比较多。我们先给一个简单的模板代码,通过代码来了解什么是协议:

@protocol ProtocolName 
@required/@optional
-(type) ProtocolFunction;
@end@interface ClassName: BaseClass <ProtocolName>
//类的属性和方法声明省略不写
@end@implementation ClassName
-(type) ProtocolFunction {//do something
}
@end

在上面的代码中们通过protocol关键字定义协议,并且在协议中定义一个方法。大家可以发现协议的定义和类的定义完全相同,不同之处在协议使用了protocol关键字。

接着定义了一个类并且实现该类,在类的实现中实现了协议中的方法。此外,还有一个重要的地方就是定义类的时候实现了协议。实现的语法是使用尖括号包含协议名,如果需要实现多个协议,那么只需要使用逗号分隔协议就可以。

看官们,从代码模板中可以看到,协议封装了方法,并且可以被类继承。因此,协议可以看作是一种轻量级的类。 虽然类可以实现协议,但是协议不能继承类,协议也可以实现其它协议,并且支持实现多个协议.

我们再回到协议定义部分中,它只声明了方法并没有实现方法,哪么这个方法要到什么时候才被实现呢?答案是协议被类实现时,也就是类实现自己方法的时候实现协议中的方法。不过并不是所有协议中的方法需要被类实现。因为协议中的方法分必须实现和可选实现两种要求,使用optional限定的方法表示可选实现,使用required限定的表示必须实现。如果两种限定都没有写默认为必须实现。对于必须实现的方法,如果没有被类实现,那么编译器会发出警告,提示没有实现协议中的方法。

看官们,协议和Java中的接口类似,如果有看官会使用Java或者看过我在Talk Android中的博客,那么很快就会掌握协议相关的知识。此外,有些地方把类实现协议叫作遵守协议,这只是叫法不同,大家看到后不要感到陌生就可以。在我的博客中统一使用实现协议。

最后我们对本章回的内容做个总结:

  • 1.定义协议使用protocol关键字,实现协议时使用<>尖括号;
  • 2.类可以实现协议,但是协议不可以继承类,类可以实现多个协议,多个协议之间使用逗号分隔;
  • 3.协议中只声明方法,在实现协议的类中实现方法;
  • 4.协议中的方法使用optional或者required限定,分别表示的可选实现或者必须实现;

看官们,欲知后事如何且听下回分解!

这篇关于一起Talk IOS吧(第二十二回 OC中的协议概述)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800058

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3