首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Swift学习专栏
unravel2025
创建于2022-11-28
订阅专栏
记录本人在学习Swift过程中的精彩文章或者各种小妙招等等,内容来自 https://www.swiftwithvincent.com/、https://sarunw.com/posts/、 等博客
等 119 人订阅
共173篇文章
创建于2022-11-28
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Swift 并发:我到底该不该用 Actor?——一张决策图帮你拍板
## Actor 是什么?(一句话版) Actor = 自带大门的房间:一次只能进一个人,进门要“等钥匙”(`await`)。 它存在的唯一理由:保护非 Sendable 的可变状态。 ## A
深入理解 DispatchQueue.sync 的死锁陷阱:原理、案例与最佳实践
## 为什么要谈“死锁” 在 Swift 并发编程中,`DispatchQueue.sync` 以“阻塞式同步”著称:简单、直观、线程安全,却也最容易让生产环境直接崩溃。 ## 什么是死锁(Dea
Swift 协议(Protocol)指南(四):协议扩展(Protocol Extension)——让“协议”自己也有默认实现
## 为什么要有“协议扩展” 1. 协议只能“声明”要求,不能“实现”要求 在 Swift 2 之前,协议类似 Java 的 Interface: - 只能写方法签名,不能写大
Swift 协议(Protocol)指南(三):Primary Associated Type、some/any 与泛型式协议实战
## 为什么 Swift 5.7 再次“颠覆”协议 在 Swift 5.7 之前,带关联类型的协议只能当约束 `<T: Sequence>`,不能当类型 `Sequence`。 这导致两个老大难:
Swift 协议(Protocol)指南(二):关联类型、Self 约束与泛型递归,一次彻底搞懂
## 为什么“关联类型”是协议的分水岭 在上面,我们接触的协议都属于“无关联类型协议”——编译期无需知道协议里的泛型占位符具体是什么。 一旦协议里出现了 `associatedtype`,它就不再
Swift 协议(Protocol)指南(一):从语法到实战
## 基础语法:一份“合同”长什么样 ```swift // 1. 定义协议:只声明,不实现 protocol FullyNamed { // 只要可读,不要求可写 var full
Swift TaskGroup 结果顺序踩坑指南:为什么返回顺序和创建顺序不一致,以及最通用的修复办法
## 现象:看起来“随机”的结果顺序 在 Swift 并发模型里,`withTaskGroup` 让我们可以一次性启动多个子任务并发执行。 很多初学者第一次写出的代码类似下面这样 ```swi
Swift 6.2 默认把代码全扔 Main Actor,到底香不香?
省流版(先给结论) 场景 建议 App 目标(Xcode 26 新建) 保持默认 MainActor.self —— UI 代码省心、并发自己显式开 纯网络/计算 SPM 包 别开 —— 默认无隔离,
Swift 扩展(Extension)指南——给现有类型“加外挂”的正规方式
什么是 Extension 定义 extension 是 Swift 提供的一种纵向扩展机制:“不修改原始代码、不创建子类”的前提下,给任意类型(class / struct / enum / pro
【Swift 错误处理全解析】——从 throw 到 typed throws,一篇就够
为什么“错误处理”不能被忽略 可选值(Optional)只能表达“有没有值”,却无法说明“为什么没值”。 网络、磁盘、用户输入等真实世界操作,失败原因往往有多种:文件不存在、权限不足、格式错误、余额不
【Swift 并发编程入门】——从 async/await 到 Actor,一文看懂结构化并发
为什么官方要重做并发模型? 回调地狱 过去写网络层,三步操作(读配置→请求→刷新 UI)要嵌套三层 closure,改起来像“剥洋葱”。 数据竞争难查 多个线程同时写同一个 var,80% 崩溃出现在
Swift 泛型深度指南 ——从“交换两个值”到“通用容器”的代码复用之路
为什么需要泛型 无泛型时代的“粘贴式”编程 问题: 代码完全一样,仅类型不同 维护 N 份副本,牵一发而动全身 泛型函数:写一次,跑所有类型 语法与占位符 T 调用方式:编译器自动推断 T 要点: 占
Swift 中的不透明类型与装箱协议类型:概念、区别与实践
前言 Swift 提供了两种隐藏类型信息的方式:不透明类型(opaque type) 和 装箱协议类型(boxed protocol type)。 它们都用于隐藏具体类型,但在类型身份、性能、灵活性等
【Swift 可选链】从“如果存在就点下去”到“安全穿隧”到空合运算符
## 什么是可选链(Optional Chaining) 一句话:“当某个实例可能是 nil 时,允许你用 问号? 一路点下去;只要链中任何一环为 nil,整条表达式就优雅地返回 nil,而不会
Swift 反初始化器详解——在实例永远“消失”之前,把该做的事做完
## 为什么要“反初始化” 1. ARC 已经帮我们释放了内存,但“内存”≠“资源”。 可能你打开过文件、有过数据库连接、订阅过通知、甚至握着 GPU 纹理句柄。 2. 反初
Swift 并发编程新选择:Mutex 保护可变状态实战解析
## 前言 Swift 5.5 带来 async/await 与 Actor 后,「用 Actor 包一层」几乎成了默认答案。 但在日常开发里,我们经常会遇到两种尴尬: 1. 只想保护一个计数器
Swift 模式:解构与匹配的安全之道
什么是“模式” 在 Swift 中,模式(Pattern) 描述了一个值的结构,而不是具体的某个值。 借助模式,我们可以: 检查某个值是否符合该结构(匹配) 把符合结构的值拆解出来,绑定到新的变量 /
Swift 下标(Subscripts)详解:从基础到进阶的完整指南
什么是下标 官方一句话:“类、结构体、枚举可以用下标(subscripts)快速访问集合、列表、序列中的元素,而无需再写专门的存取方法。” 换句话说:someArray[index]、someDict
Swift 中基础概念:「函数」与「方法」
为什么要区分「函数」和「方法」 写 Swift 时,我们每天都在写 func。 但同一个关键字,有时叫「函数」,有时又叫「方法」。 名字不同,背后其实是作用域与归属权的差异: 函数(function)
Swift 方法全解:实例方法、mutating 方法与类型方法一本通
前言 官方文档已经把语法和规则写得足够严谨,但初学者常遇到三个卡点: 结构体/枚举居然也能定义方法? mutating 到底“变异”了什么? static 与 class 关键字在类型方法里的区别与实
下一页