一起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

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

Java 多线程概述

多线程技术概述   1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间。线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换、并发执行,一个进程最少有一个线程,线程实际数是在进程基础之上的进一步划分,一个进程启动之后,进程之中的若干执行路径又可以划分成若干个线程 2.线程的调度 分时调度:所有线程轮流使用CPU的使用权,平均分配时间抢占式调度

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备