首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Swift
项阿丑
创建于2026-01-27
订阅专栏
Swift相关知识整理
等 7 人订阅
共381篇文章
创建于2026-01-27
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
3-1.【函数式编程】map 与 for 循环在 Swift 中的区别?在什么情况下推荐使用 map?
1️⃣ 基本概念对比 特性 for 循环 map 目的 遍历集合并执行操作(可以有副作用) 遍历集合并生成新的集合 返回值 没有返回值(Void) 返回一个新的数组或集合,长度与原集合一致 可读性 适
2-30.【Concurrency】Swift Concurrency 与 OperationQueue 的协作模式有哪些优势与局限?
1️⃣ 核心结论 一句话总结:Swift Concurrency 更安全、可组合、结构化,OperationQueue 更灵活兼容旧代码,但异步集成需额外适配。 2️⃣ 协作模式 ① 在 Operat
2-29.【Concurrency】在混用 MainActor 与 DispatchQueue 的场景下,如何避免死锁或线程阻塞?
1️⃣ 核心结论 一句话:主线程永远不要被同步阻塞或等待它自己完成异步任务。 2️⃣ 常见死锁场景 ① 同步阻塞主线程 问题: 主线程被 sync 阻塞 Task 在 MainActor(主线程)排队
2-28.【Concurrency】async/await 与 GCD 混用时需要注意哪些线程安全问题?
1️⃣ 核心原则 关键点: Actor(包括 MainActor)保证内部状态安全 GCD 队列本身不能保护跨队列共享状态 async/await 任务可能切换线程 2️⃣ 常见线程安全问题 ① 非
2-27.【Concurrency】如何在 async 函数中优雅处理 Task cancellation?
1️⃣ 核心原则 2️⃣ 检查取消的基本方法 ① 使用 Task.checkCancellation() 如果任务已取消 → 抛出 CancellationError 异步调用者可捕获或让上层继续传播
2-26.【Concurrency】在 TaskGroup 中,如何正确响应取消信号?
1️⃣ 核心原则 一句话:父任务取消 → 子任务标记为 cancelled → 子任务在挂起点响应 → TaskGroup 安全退出。 2️⃣ 基本示例 父任务或外层 Task 调用 .cancel(
2-25.【Concurrency】Concurrency 的任务取消是如何传播的?
1️⃣ 核心结论 一句话:取消是“向下传递的协作信号”,不是强制杀死线程。 2️⃣ 父子任务关系与结构化并发 Swift 使用 结构化并发(Structured Concurrency)管理任务生命周
2-24.【Concurrency】AsyncStream 如何实现 producer/consumer 模型,保证线程安全?
1️⃣ 核心结论 一句话:内部队列 + continuation + executor 串行化 = 安全的异步流。 2️⃣ AsyncStream 构成要素 Producer 调用 yield(_:)
2-23.【Concurrency】AsyncStream 和 AsyncThrowingStream 的区别是什么?
1️⃣ 核心区别 特性 AsyncStream AsyncThrowingStream 是否可以抛异常 ❌ 不抛异常 ✅ 可以抛异常 next() 返回类型 Element? Result<Eleme
2-22.【Concurrency】AsyncSequence 是如何支持异步迭代的?底层原理是什么?
1️⃣ 核心概念 类似于 Sequence,但元素是 异步生成的 迭代器遵循 AsyncIteratorProtocol: next() 是异步函数: 返回一个元素或 nil(序列结束) 可以挂起等待
2-21.【Concurrency】在 MainActor 上执行耗时任务会带来什么问题?如何优化?
1️⃣ 核心结论 2️⃣ 为什么会卡 MainActor 执行原理 MainActor executor 固定绑定 主线程 同一时间 只能有一个任务执行 所有 @MainActor 方法和属性访问都会
2-20.【Concurrency】MainActor 与 DispatchQueue.main 的区别与联系是什么?
1️⃣ 核心结论 2️⃣ 联系点 联系 说明 都运行在主线程 MainActor 默认 executor 绑定到主线程,DispatchQueue.main 也是主线程队列 排队执行 Dispatch
2-19.【Concurrency】async 函数标注 @MainActor 后,编译器会做什么处理?
1️⃣ 核心结论 一句话: @MainActor + async → 自动主线程调度 + await 强制挂起。 2️⃣ 标注 @MainActor 后的编译器处理流程 假设我们有: 编译器做的事情
2-18.【Concurrency】MainActor 的本质是什么?它是如何保证任务在主线程执行的?
1️⃣ 核心结论 一句话总结:MainActor = 主线程专属的 Actor。 2️⃣ 基本概念 @MainActor 是 Swift Concurrency 的属性标记,用于 将类、函数、属性或任
2-17.【Concurrency】actor 之间的消息传递是同步还是异步?它如何保证线程安全?
1️⃣ 核心结论 换句话说: Actor 内部属性永远不会被多个线程同时访问 跨 Actor 调用必须使用 await executor 串行化任务执行 2️⃣ 消息传递的本质 ① 什么是消息 当一个
2-16.【Concurrency】非 actor 上下文访问 actor 属性需要使用 await 的原理是什么?
1️⃣ 核心结论 换句话说:await = 等待 Actor 内部串行任务完成。 2️⃣ 原理:Actor 的隔离机制 每个 Actor 拥有自己的 executor(串行队列)。 Actor 内部的
2-15.【Concurrency】actor 内部属性在并发访问时是否安全?为什么?
1️⃣ 结论 2️⃣ Actor 如何保证安全 ① 单一执行上下文(Executor) 每个 Actor 都有自己的 executor,类似一个队列。 同一时间只能有一个任务在执行 Actor 的方法
2-14.【Concurrency】Actor 是如何保证数据隔离的?与锁机制相比有什么优势?
一句话核心 1️⃣ Actor 的基本概念 特点: 状态隔离 balance 只能被 actor 自己访问 异步访问 跨 actor 调用必须 await executor 单线程保证 actor 内
2-13.【Concurrency】Task cancellation 与 structured concurrency 有何联系?
一句话总结 1️⃣ 结构化并发与取消的天然联系 结构化并发的原则 任务树 父任务创建子任务 → 形成父子关系 生命周期绑定 子任务必须在父任务作用域结束前完成 错误和取消传播 父任务失败/取消 → 子
2-12.【Concurrency】在 async/await 中,如何保证子任务在父任务结束前完成?
一句话概括 1️⃣ 父任务与子任务的关系 父任务作用域 父任务知道它的子任务是谁 运行期维护 Task Tree(父子关系树) 父任务在退出作用域前,会 join 所有子任务(等待完成或取消) Tas
下一页