首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Swift学习专栏
unravel2025
创建于2022-11-28
订阅专栏
记录本人在学习Swift过程中的精彩文章或者各种小妙招等等,内容来自 https://www.swiftwithvincent.com/、https://sarunw.com/posts/、 等博客
等 121 人订阅
共173篇文章
创建于2022-11-28
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Swift 语法速通:iOS 开发必会的 8 大核心概念(图解+类比)
Struct vs Class:地图复印 vs 谷歌文档 维度 struct(值类型) class(引用类型) 传递行为 复印一份 同一把钥匙 内存位置 栈(快) 堆+ARC 是否继承 ❌ ✅ 举例
Swift 6 并发编程:深入理解 `@unchecked Sendable` 的合法使用与陷阱
前言:Sendable 是什么?为什么要有 @unchecked? Swift 5.5 引入结构化并发(Structured Concurrency)后,Sendable 协议成为编译期防止数据竞争的
Swift 6.0 协议扩展:解锁协议新特性,写出更优雅、更高效的代码
前言 协议(Protocol)一直是 Swift 的“一等公民”。借助协议,我们可以把“能做什么”与“怎么做”彻底解耦。 Swift 6.0 在协议扩展(Protocol Extension)层面一次
Swift 6 并发时代,如何优雅地“抢救”你的单例?
一、为什么单例在 Swift 6 突然“不香了” 旧认知 Swift 6 新现实 static let shared = XXX()随手一写 编译器直接甩出两行血红诊断:1. 非隔离的全局可变状态(n
SwiftUI 踩坑记:onAppear / task 不回调?90% 撞上了“空壳视图”!
现象:代码看着没问题,就是不走回调 真相: Group 只是语法糖,它把子视图原样转发给父层级;当 if 分支为 false 时,整个 Group 被折叠成空节点,SwiftUI 认为“没有任何东西需
@isolated(any) 深度解析:Swift 并发中的“隔离追踪器”
什么是 @isolated(any)? @isolated(any) 是一个 函数类型属性,用于: 保留函数的 actor 隔离信息(如 @MainActor、@MyActor 或 nonisolat
Swift 6.2 新特性 `@concurrent` 完全导读
背景:为什么突然冒出 @concurrent? Swift 6.2 引入了两项默认行为变化: Main Actor 默认隔离(UI相关的Target或package) 未显式标注隔离的代码自动视为 @
Swift 里的“橡皮擦”与“标签”——搞懂 existentials 与 primary associated type
Swift 的协议一旦带上 associatedtype,就像给类型贴了一张“待填写的支票”——编译时必须知道具体填什么数字,否则无法兑现。 这导致一个经典编译错误: existentials(any
Swift 结构化并发 6 条铁律 —— 一张图 + 一套模板,让 `async let` / `TaskGroup` / `Task {}` 不再踩坑
思维导图(先保存,再阅读) 为什么分“结构化”与“非结构化” 维度 Structured Unstructured 能否成为子任务 ✅ ❌(只能是根) 能否成为父任务 ✅ ✅(再开 structure
深入理解 Swift Concurrency:从 async/await 到 Actor 与线程池的完整运行机制
一、async 函数的本质:可挂起的函数 ✅ 什么是 async 函数? async 函数是可以被挂起的函数。 挂起 ≠ 阻塞线程,而是让出线程去执行其他任务。 挂起只发生在 await 处,称为潜在
【Swift Concurrency】深入理解 `async let` 与 `TaskGroup`:并发任务的生命周期与错误传播机制
一、什么是 async let? async let 是 Swift 提供的一种结构化并发语法糖,用于并发地启动多个子任务,并延迟等待其结果。 ✅ 基本用法 每个 async let 会创建一个子任务
在同步代码里调用 async/await:Task 就是你的“任意门”
场景:同步上下文想调异步函数 错误提示: 官方逃生舱:包一层 Task {} Task 会立刻在新协程里执行闭包,不要求外部上下文支持并发。 无需手动持有 Task 实例,除非你想取消或等待它完成。
Swift 三目运算符指南:写法、场景与避坑
什么是三目运算符? 三目运算符(ternary operator)是 if/else 的单行表达式版,语法模板: 必须同时给出真/假两个分支,否则编译器直接报错。 最小可运行示例 当 username
一篇读懂 Swift 不透明类型:让带 associatedtype 的协议也能当返回值
why:带 associatedtype 的协议为何不能当返回值? associatedtype 未被确定 → 编译期无法决定具体内存布局。 Swift 拒绝“协议当作类型”使用,除非用泛型或 opa
`@dynamicCallable`:把 Swift 对象当函数喊
一、为什么需要“假装函数”? 有时我们想让一个值看起来就是函数,从而写出更自然的 DSL: @dynamicCallable 就是 Swift 给的“变身器”: “让实例像函数一样被 call,背后转
`@preconcurrency` 完全导读:让旧代码平安驶上 Swift 并发快车道
一、为什么会出现 @preconcurrency? Swift 5.5+ 的并发模型要求: 跨任务传递的类型必须Sendable 访问共享状态需隔离(@MainActor / actor) 编译器静态
调试 Swift 并发:我到底在哪个 Actor?
一、Swift 6 的“灵魂拷问” 写异步代码时你想知道: 于是老习惯: Swift 6 直接报错: → 别再关心线程,Swift 并发里正确问题是: 二、为什么“线程”不够用了? Swift 并发
Swift Package Command Plugin 实战:一键生成 Package 元数据
一、Command Plugin 与 Build Tool Plugin 区别速览 维度 Command Plugin Build Tool Plugin 触发方式 手动 swift package
Swift Package Plugin 深度实战:从原理到落地,自动生成字体枚举
一、什么是 Swift Package Plugin 诞生背景 Xcode 11 支持 Swift Package 分发源码 Xcode 14 把「插件」正式接入构建系统,允许在构建前/中/后执行自定
用 `defer` 管理异步清理:Swift 中的“保险丝”模式
异步状态清理的典型痛点 问题: 函数变大后,多处 return / throw 容易漏掉 isLoading = false Task 取消也会提前退出,清理代码同样不会执行 复制粘贴“收尾”逻辑 =
下一页