Lazy loaded image
🪢通过Delegate&Protocol解决Pod循环应用实战
Words 355Read Time 1 min
2025-5-29
2025-5-29
type
status
date
slug
summary
tags
category
icon
password
😀
这里写文章的前言: 之前曾经在另一篇文章中分享了Protocol与Delegate到底是什么:
🗃️
Protocol 与 Delegate
而现在在工作中,恰好遇到了一个Pod循环引用的问题,正好记录下尝试使用Protocol与Delegate进行解耦的流程。

💬 问题背景

因为隐私原因,这里使用代称。
首先让我们看一下今天要设计的两个Pod:
  • PodBase:部门的基础Pod
  • PodSubTool:一个功能相对独立的Pod,用于检测一些场景
 
现在我遇到的问题如下:
  1. PodBase 中包含了启动各个独立功能Pod的代码,即 PodBase 会调用 PodSubTool 的start方法,来开启SubTool的检测功能。
  1. 为了提升 PodSubTool 的检测准确率,现在需要使用 PodBase 中的一个工具方法。
  1. 由于以上两点,达成一个 PodBasePodSubTool 需要循环引用的局面
  1. 需要注意的是,这两个Pod,都被同一个主工程 MainProject 所依赖
 

🔧 解决流程

首先我们先提出一个基本的解决思路:
  • PodSubTool 定义协议并持有 delegate,不依赖 PodBase;
  • MainProject 中创建一个桥接对象(Bridge/Adapter),实现该协议,内部调用 PodBase;
  • 最终在 MainProject 中由 PodBase 创建 PodSubTool 时,顺便设置 delegate
 
上一篇
OC中的GCD (Grand Central Dispatch)
下一篇
Android火焰图里常见的Slice,他们都是什么?