当前位置: 首页 > news >正文

Swift —— delegate 设计模式

一、什么是 delegate 模式

所谓 delegate 就是代理模式。简单来说,delegate 模式就是在类的函数里运行完一段代码后,你可以通过一个符合某个代理协议的属性来调代理的方法。其中,代理方法就是回调函数。

二、delegate 模式与闭包比的优势

如果只看 delegate 与 闭包对同一个函数的影响,其实 delegate 和闭包并没有什么区别。但如果对于多个类来说,delegate 可以由于有一个类是专门存协议函数的实现的,因此多个函数在调同一个回调函数时,我们就不用像传闭包那样需要写多个相同的闭包了,直接调代理协议里的函数就行了。

三、delegate 模式的组成

delegate 模式由 3 样东西组成:类专用的代理协议、有符合代理协议的属性的类、代理方法的实现的类。

四、如何实现 delegate 模式

protocol DelegateProtocol: AnyObject { // 类专属的代理协议func sig1()func sig2()
}class Delegated { // 被代理的类weak var delegate: DelegateProtocol?func foo() {// ... 一段代码delegate?.sig1() // 调代理方法,可以理解成回调函数的一种}
}class Delegate: DelegateProtocol { // 这个代理类就是专门存回调函数的实现的func sig1() {print("sig1")}func sig2() {print("sig2")}
}

http://www.dtcms.com/a/134004.html

相关文章:

  • 宝塔面板面试内容整理-Web服务器优化
  • Google最新《Prompt Engineering》白皮书全解析
  • 多线程、JUC——面试问题自我总结
  • 住宅代理是什么?2025详细指南
  • 基于前端技术的QR码API开发实战:从原理到部署
  • Handsontable 表格组件的使用
  • 自己总结的选型
  • WebSocket 技术详解
  • Flink Hive Catalog最佳实践
  • 从零实现富文本编辑器#2-基于MVC模式的编辑器架构设计
  • 大模型量化实战:GPTQ与AWQ量化方案对比与部署优化
  • 大数据学习(106)-hivesql函数
  • Maven相关名词及相关配置
  • Ubuntu卸载小皮面板
  • 记一次springboot集成海康威视SDK过程
  • 九、自动化函数02
  • sprintf函数
  • 企业应如何防范 AI 驱动的网络安全威胁?
  • WAF防火墙:构筑Web应用安全的“隐形护盾”
  • emotn ui桌面tv版官网-emotn ui桌面使用教程
  • 通信算法之265: 无人机系统中的C2链路
  • 前端 -- uni-app 的 splitChunks 分包详解与实战!
  • 图像预处理-色彩空间补充,灰度化与二值化
  • 如何在不同版本的 Elasticsearch 之间以及集群之间迁移数据
  • Android ExifInterface rotationDegrees图旋转角度,Kotlin
  • 基于 PyTorch 的 LSTM 实现降雨量预测
  • 使用RUN pip install flask和RUN pip install -r requirements.txt
  • 【rdma通信名词概念】
  • 鸿蒙开发中,@Extend、@Styles 和 @Builder 的区别
  • 前端快速入门——JavaScript函数、DOM