首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Swift
项阿丑
创建于2026-01-27
订阅专栏
Swift相关知识整理
等 6 人订阅
共381篇文章
创建于2026-01-27
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
13-23.【Combine】全局 State / Environment 中使用 Combine 时,如何避免反向依赖和意外订阅?
在全局状态(Global State)或环境对象(Environment)中深度集成 Combine 时,最核心的风险在于**“状态爆炸”和“订阅管理失控”**。当多个解耦的模块通过单例或 Envir
13-22.【Combine】如何用 Combine 构建可测试、可回滚的 State 管理?
构建可测试且可回滚的状态管理(State Management),核心在于将状态变更逻辑与副作用执行彻底分离。在 Combine 中,这通常通过实现一个基于“单向数据流”的 Store 来完成。 以下
13-21.【Combine】高频事件流(TextField 输入、滚动)如何设计 Combine 链,保证性能?
处理高频事件流(如 TextField 字符变动或 ScrollView 偏移量监听)时,性能优化的核心目标是:减少不必要的计算开销、防止 UI 线程阻塞以及规避网络请求的“竞态条件”。 设计一个高性
13-20.【Combine】在 TCA / MVVM 架构中,Combine 流应该管理哪些副作用?
在 TCA (The Composable Architecture) 和 MVVM 架构中,Combine 流不仅是传递数据的管道,更是**管理“不确定性”**的核心。 副作用(Side Effec
13-19.【Combine】Combine 如何与 SwiftUI 的单向数据流结合?
Combine 与 SwiftUI 的结合,本质上是建立了一套 “状态驱动视图” 的闭环系统。在典型的单向数据流(Unidirectional Data Flow, UDF)架构中,Combine 充
13-18.【Combine】delay / delay(for:scheduler:) 的底层调度原理是什么?
在 Combine 中,delay(for:tolerance:scheduler:options:) 是一个非常有代表性的时间操作符。它的底层原理并非简单的“阻塞线程”,而是一套基于 Schedul
13-17.【Combine】timeout / retry 操作符在网络请求中如何使用?
在网络请求这种充满不确定性的环境中,timeout(超时控制)和 retry(重试机制)是构建健壮 App 的必备工具。它们一个负责**“设置底线” ,一个负责“挽回局面”**。 1. Timeout
13-16.【Combine】switchToLatest 如何保证取消旧任务?
switchToLatest 保证取消旧任务的核心机制在于其对**订阅生命周期(Subscription Lifecycle)**的精细控制。 它是一个“高阶”操作符,专门处理“Publisher 的
13-15.【Combine】scan / reduce 在状态累积中的应用场景及注意事项?
在响应式编程中,scan 和 reduce 是处理“流式数据累积”的两大核心算子。它们都接收一个初始值和一个累积闭包,但在生命周期和产出时机上有着本质的区别。 1. 核心定义:过程 vs 结果 sca
13-14.【Combine】filter、compactMap 的内部机制有什么性能差异?
在 Combine 中,filter 和 compactMap 虽然看起来都能起到“减少数据量”的作用,但它们的内部逻辑、类型推导以及对 CPU 的占用方式存在细微但关键的差异。 1. 内部机制的本质
13-13.【Combine】share() 与 multicast() 的区别和底层原理?
在 Combine 中,share() 和 multicast() 都属于共享操作符。它们存在的根本目的是解决**“重复订阅副作用”**的问题(例如:防止每增加一个订阅者就重新发起一次网络请求)。 虽
13-12.【Combine】catch 与 tryCatch 的差异及对错误传播的影响?
在 Combine 的错误处理体系中,.catch 和 .tryCatch 是防范流因错误而“猝死”的两道核心防线。它们最本质的区别在于:处理闭包本身是否具备“抛出错误”的能力,以及它们对下游 Fai
13-11.【Combine】merge、combineLatest、zip 的区别和典型用法?
这三个操作符是 Combine 中处理多流聚合的核心工具。它们最本质的区别在于触发条件以及对数据配对的逻辑。 1. Merge(合并) 本质:将多个相同类型的流“揉”成一个。 merge 不会对数据做
13-10.【Combine】debounce、throttle、removeDuplicates 的实现原理及使用场景?
在处理高频触发的事件流(如滚动、点击、输入)时,这三个操作符是 Combine 中最重要的**“流量过滤器”**。它们通过不同的策略减少不必要的计算和 UI 刷新,从而提升 App 的性能。 1. D
13-9.【Combine】map / flatMap / switchToLatest 的本质区别和应用场景是什么?
这三个操作符代表了 Combine 处理数据流时的三个层级:值的转换、流的嵌套以及流的竞争。理解它们的关键在于观察它们如何处理“高阶 Publisher”(即产生 Publisher 的 Publis
13-8.【Combine】PassthroughSubject 与 CurrentValueSubject 的核心区别及应用场景?
在 Combine 中,Subject 是连接命令式代码(如按钮点击、代理回调)与响应式世界的桥梁。PassthroughSubject 和 CurrentValueSubject 的核心区别在于它们
13-7.【Combine】Combine 中 .sink、.assign 的区别和适用场景是什么?
在 Combine 中,.sink 和 .assign 是最常用的两个终端操作符(Subscribers) 。它们的主要区别在于赋值意图、生命周期管理以及对错误的处理方式。 1. .sink:多功能的
13-6.【Combine】什么是“Backpressure”?Combine 如何处理?
在响应式编程中,Backpressure(背压) 是一个至关重要的概念。简单来说,它描述的是:当数据的产生速度(Publisher)超过了数据的处理速度(Subscriber)时,系统如何进行协调,防
13-5.【Combine】Combine 的 Cancellable 是如何工作的?
在 Combine 中,Cancellable(及其最常见的实现 AnyCancellable)扮演的是**“资源租约”和“生命周期控制器”**的角色。 理解它的工作原理可以从以下四个层面拆解: 1.
13-4.【Combine】Swift 的 ARC 与 Combine 的 Publisher/Subscriber 链有什么交互?
在 Swift 中,ARC(自动引用计数)与 Combine 的交互是一场关于生命周期绑定的博弈。如果不理解它们之间的引用关系,很容易陷入“订阅立即失效”或“内存永久泄漏”的两个极端。 核心逻辑可以概
下一页