首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Swift
项阿丑
创建于2026-01-27
订阅专栏
Swift相关知识整理
等 6 人订阅
共381篇文章
创建于2026-01-27
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
13-3.【Combine】AnyPublisher 的代价是什么?为什么有些场景需要避免类型擦除?
在 SwiftUI 和 Combine 的开发中,.eraseToAnyPublisher() 是我们最常用的“橡皮擦”,它能把那串长得像乱码的嵌套泛型变成优雅的 AnyPublisher<Outpu
13-2.【Combine】Combine 的类型系统是如何保证链式操作的类型安全的?
Combine 的类型系统是建立在 Swift 强类型特性之上的极致应用。它通过 泛型约束(Generic Constraints) 和 类型擦除(Type Erasure) ,在编译期就锁定了一个数
13-1.【Combine】Combine 中 Publisher、Subscriber、Subject 的本质区别是什么?
在 Combine 的响应式世界中,这三个角色构成了**“生产、消费、调度”的闭环。理解它们的本质区别,关键在于理清“谁拥有主动权”以及“数据如何流动”**。 1. Publisher(发布者):被动
12-34.【SwiftUI】VIPER 中 Interactor 和 Presenter 的边界如何划分才不会“反向依赖”?
在 VIPER 架构中,Interactor 和 Presenter 之间的边界是最容易产生“纠缠”的地方。要彻底消除反向依赖,核心原则是:Presenter 决定“做什么”(业务意图),而 Inte
12-33.【SwiftUI】如何在 SwiftUI 项目中逐步引入 TCA / MVVM,而不导致全盘重构失败?
在成熟的 SwiftUI 项目中,引入像 TCA (The Composable Architecture) 这样具有极强侵入性的架构,最忌讳的是“推倒重来”。 成功的策略应该是**“边缘突破、局部隔
12-31.【SwiftUI】面对 10 个模块依赖的核心模块,如何设计 API 保持稳定?
面对 10 个以上模块依赖的核心模块,API 设计已经超出了“写代码”的范畴,进入了**“制定标准”的领域。核心模块的任何变动都会引发巨大的“扇出效应”(Fan-out Effect)**,导致上游编
12-30.【SwiftUI】如何避免 ViewModel/Presenter 反向依赖 UI 层?SwiftUI 中更难还是更容易?
在架构设计中,ViewModel 或 Presenter 的职责是**“处理业务逻辑并维护状态” ,而 UI 层的职责是“将状态绘制出来并捕捉用户动作”**。 “反向依赖”是指逻辑层(ViewMode
12-29.【SwiftUI】依赖注入最容易滥用的地方?构造注入、属性注入、环境注入的坑?
依赖注入(Dependency Injection, DI)的核心本意是解耦,但在实际操作中,它最容易演变成**“过度设计”或“隐藏的混乱”**。 如果 DI 让你的代码变得难以追踪、或者让单元测试本
12-28.【SwiftUI】Protocol + Default Implementation 为什么会破坏模块边界?
在 Swift 中,Protocol + Default Implementation(协议+默认实现)是一把双刃剑:它在提供代码复用便利的同时,往往会悄悄侵蚀模块之间的契约(Contract) ,导
12-27.【SwiftUI】真正的模块边界是什么?Target / Framework / SPM / Protocol 各自角色?
在软件工程中,真正的模块边界(Module Boundary)不是文件夹,也不是文件名,而是“控制反转的墙” 。它定义了代码的可见性、编译的隔离性以及依赖的流向。 在 Swift 生态中,这四个概念分
12-26.【SwiftUI】SwiftUI 的动画如何影响 View 更新和性能?
在 SwiftUI 中,动画不仅仅是视觉上的“平滑过渡”,它本质上是状态(State)在时间维度上的连续插值。 理解动画如何影响渲染管线,是优化复杂交互性能的关键。 1. 动画触发的本质:状态插值 当
12-25.【SwiftUI】State 粒度设计失当导致的卡顿案例?
在 SwiftUI 中,状态粒度设计失当(Granularity Mismatch)导致的卡顿,通常不是因为数据处理不过来,而是因为**“无效工作(Useless Work)”**占满了主线程的渲染窗
12-24.【SwiftUI】如何分析 SwiftUI 中的 view 重建和 diff 次数?
分析 SwiftUI 视图的重建(Re-evaluation)和 Diff 过程,本质上是在探究 “为什么我的 body 又跑了一次?” 以及 “这次渲染到底改了哪些像素?” 。 由于 SwiftUI
12-23.【SwiftUI】 View 的 body 里做副作用可能带来哪些非直觉 Bug?
在 SwiftUI 中,body 是一个纯函数属性。它的唯一职责是描述 UI 的当前快照,而不是执行任何“动作”。 如果你在 body 内部执行副作用(如修改变量、发起请求、注册通知),你会进入一个非
12-22.【SwiftUI】 LazyVStack / LazyHStack 的工作原理和使用场景?
在 SwiftUI 中,LazyVStack 和 LazyHStack 的核心价值在于**“按需加载”**。它们是处理长列表或大规模数据流时,平衡内存占用与渲染性能的关键工具。 1. 工作原理:懒加载
12-21.【SwiftUI】 SwiftUI 的 ViewModel 如何避免反向依赖 UI?
在 SwiftUI 开发中,ViewModel 反向依赖 UI(即 ViewModel 逻辑中包含了对特定视图实现、层级结构或 UI 组件的假设)会导致代码难以测试、难以复现 Bug。 要实现“Vie
12-20.【SwiftUI】 @ObservedObject / @StateObject 的滥用可能导致哪些性能问题?
在 SwiftUI 中,@StateObject 和 @ObservedObject 的误用是导致 App 卡顿、内存泄漏和逻辑异常的头号诱因。这种滥用通常表现为对**所有权(Ownership)和重
12-19.【SwiftUI】SwiftUI 的 derived state 与 computed property 如何避免重复计算?
在 SwiftUI 中,避免 Derived State(派生状态) 重复计算的核心在于区分其存储位置和观察粒度。虽然简单的计算属性(Computed Property)在每次 body 执行时都会运
12-18.【SwiftUI】SwiftUI / TCA 中,State 变化与 ARC、diff 的关系?
在 SwiftUI(尤其是结合 TCA)的上下文中,State(状态) 、ARC(自动引用计数) 和 Diff(差异对比) 三者构成了一个性能平衡的三角关系。 我们可以通过以下三个层面来拆解它们之间的
12-17.【SwiftUI】响应式链条中副作用应该放在哪里?为什么很多项目会退化成“响应式外壳 + 命令式内核”?
在响应式编程(RP)中,副作用(Side Effects)的放置位置是区分“优雅架构”与“代码泥潭”的分水岭。处理不当,系统就会陷入你提到的尴尬境地:外面披着响应式的皮,核心逻辑全是命令式的乱麻。 1
下一页