首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Swift学习专栏
unravel2025
创建于2022-11-28
订阅专栏
记录本人在学习Swift过程中的精彩文章或者各种小妙招等等,内容来自 https://www.swiftwithvincent.com/、https://sarunw.com/posts/、 等博客
等 55 人订阅
共102篇文章
创建于2022-11-28
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
在同步代码里调用 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 取消也会提前退出,清理代码同样不会执行 复制粘贴“收尾”逻辑 =
Swift Continuations 完全指南:一口气弄懂 4 种“桥梁”
一、为什么需要 Continuations? Swift 5.5 带来 async/await,但: 老 SDK / 三方库仍用回调 自己封装的 DispatchQueue、Timer、Notific
深入理解 SwiftUI 的 Structural Identity:为什么“换个条件分支”就会丢状态?
什么是 Structural Identity? SwiftUI 通过结构身份(Structural Identity)判断新旧视图树中的同一个节点: 类型相同 在层级中的位置相同 祖先链的身份相同
Swift 的 `withoutActuallyEscaping`:借一个 `@escaping` 身份,但不真的逃跑
一、为什么会有“假逃跑”需求? 默认情况下,函数参数的闭包是 non-escaping: 只能在函数体内同步调用 编译器可把闭包放在栈上,更快、无堆分配 但某些标准库 API(lazy.filter、
Opaque Types 完全指南:Swift 的“密封盒子”魔法
一、什么是 Opaque Type? 一句话:“函数返回一个具体类型,但调用者只能看到它遵守的协议。” 语法: some View 就是不透明返回类型(opaque return type)。 编译器
Thread.sleep vs Task.sleep:一句话记住“别再阻塞线程”
一、两句话区分 API 阻塞谁 后果 Thread.sleep(forTimeInterval:) 整条线程 线程池“饿死”,其他任务无法调度 Task.sleep(nanoseconds:) 当前任
强制 SwiftUI 重新渲染:`.id()` 这把“重启键”你用对了吗?
为什么需要“强制 reload”? SwiftUI 的声明式 DSL 依赖 状态 diff 自动更新视图,但以下场景需要“硬重启”: 网络请求失败后的“重试”按钮 图片/视频加载损坏,需重新解码 底层
Swift 6.2 新语法糖:在字符串插值里直接给 Optional 写默认值
一句话看懂新特性 旧写法(nil-coalescing) 新写法(Swift 6.2 插值默认值) 异类型痛点:旧语法搞不定 省去了手动 .map(String.init) ?? "Unknown"
窥探 `@Observable` 的“小黑盒”:private 属性到底会不会被观察?
问题抛出 直觉:private = 对外隐藏 = 不生成观察代码? 真相:除非加 @ObservationIgnored,否则一律观察,与可见性无关! 验证工具:SIL(Swift Intermedi
Swift 并发避坑指南:自己动手实现“原子”属性与集合
为什么需要“原子”操作? Swift 没有现成的 atomic 关键字。当多个线程/任务同时读写同一属性或集合时,会出现: 读到中间状态(数组越界、字典重复 key) 丢失更新(值类型复制-修改-写回
惊!只是 `import Foundation`,`String.contains("")` 的返回值居然变了?
两行代码,两种结果 是否 import Foundation "".contains("") "abc".contains("") ❌ 纯 Swift true true ✅ + Foundation
Swift 6.2 新武器:`weak let` —— 既弱引用又不可变的安全魔法
为什么需要 weak let? 需求场景 weak var的痛点 weak let的新能力 并发安全的 Sendable类型 weak var无法标记 Sendable ✅ 可以 不可重新赋值的弱引用
下一页