首页
沸点
课程
数据标注
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 集合类型详解(三):自定义集合、持久化结构与 ORM 共舞
从零实现一个 CircularArray 需求:固定容量,到达上限后从头覆盖,支持 for-in、count、randomAccess。 步骤: 遵循 Collection 协议; 提供 startI
Swift 集合类型详解(二):自定义 Hashable、值语义与性能陷阱
为什么要“自定义”Hashable? 官方文档只告诉你“Set/Dictionary 的元素/键必须 Hashable”,却没说: 系统默认的哈希算法什么时候会“翻车”? 手写 hash(into:)
Swift 集合类型详解(一):Array、Set、Dictionary 全貌与选型思路
三种集合速览 类型 有序? 唯一? 键值对? 适用场景举例 Array ✅ ❌ ❌ 排行榜、聊天记录、播放队列 Set ❌ ✅ ❌ 去重标签、已读 ID 池、权限集合 Dictionary ❌ key
Swift 6 并发深渊:@unchecked Sendable 与“隐式 MainActor”如何合谋杀死你的 App
故事开场:一行“看似无害”的全局变量 Swift 6 编译器立刻翻脸: Static property 'sink' is not concurrency-safe because it is non
告别 UIKit 生命周期:SwiftUI 视图一生命全解析——从 init 到 deinit 的“隐秘角落”
为什么 6 年后还要再聊 SwiftUI 生命周期? 2019 年 SwiftUI 发布时,我们像“翻译官”一样,把 UIKit 的 viewDidLoad、viewWillAppear 强行映射到新
Swift 中的基本运算符:从加减乘除到逻辑与或非
运算符(Operator)到底是什么? 运算符 = 用来「检查、改变、合并」值的特殊符号或短语。 操作数(Operand) = 被运算符影响的值。 按操作数个数分类: 一元(Unary):-a、!b、
Swift 中“特性开关”实战笔记——用编译条件+EnvironmentValues优雅管理Debug/TestFlight/AppStore三环境
为什么要“特性开关” 主干开发(trunk-based)要求频繁合入半成品代码,但又不希望用户踩雷。 同一套代码要在 Debug(调试)、TestFlight(内测)、App Store(正式)三种环
Swift 并发任务中到底该不该用 `[weak self]`?—— 从原理到实战一次讲透
为什么闭包里总写 [weak self] 成了肌肉记忆? 在 Swift 回调式 API 时代,我们被教育“只要闭包可能产生循环引用,就写 [weak self]”。 这个经验在 @escaping
Swift 初探:从变量到并发,一文带你零基础读懂官方 Tour
简单值(Simple Values) 常量与变量 编译器自动推断类型,也可以显式标注: 类型转换必须显式 字符串插值(推荐写法) 多行字符串 数组 & 字典 空数组、空字典写法: 控制流(Contro
SwiftUI Binding 深坑指南:为什么 `Binding(get:set:)` 会让你的视图疯狂重绘?
两种 Binding 的“表面相同,底层不同” 类型 写法 是否可比较 是否触发多余重绘 KeyPath Binding $value2 ✅ SwiftUI 可比较 ❌ 仅值变化时重绘 Manual
SwiftUI redraw 机制全景解读:从 @State 到 Diffing
为什么 UIKit 程序员总问“我的状态去哪了?” 特性 UIKit SwiftUI 视图定义与生命周期 视图为类(Class),生命周期明确,长期驻留内存 视图为值类型(Struct),每次刷新生成
Swift 6.1 `withTaskGroup` & `withThrowingTaskGroup` 新语法导读
为什么需要 TaskGroup? 在 Swift 并发里,当你想: 同时发起 N 个异步任务(如批量下载图片) 等全部完成再汇总结果 支持中途取消、错误传播 手动 Task { } 会显得碎片化且难以
Swift 并发:Actor、isolated、nonisolated 完全导读
Actor 是什么? Actor 是引用类型(与 class 类似),但自带隔离域: 任意时刻只允许一个任务进入 Actor 内部 外部调用必须加 await,自动排队 编译器保证无数据竞争,无需手动
Swift 5.9 `consume` 操作符:一次说清楚“手动结束变量生命周期”
为什么要 consume? Swift 的 ARC 已经自动管理内存,但“隐形拷贝”在两种场景会成为瓶颈: 大块数据(MLX 数组、CVPixelBuffer、Data > 10 MB) 超高频次(游
SwiftUI Preferences 完全指南:从“向上传值”到 Swift 6 并发安全
为什么需要 Preferences? 在 SwiftUI 里,向下传值有 @State → @Binding → @Environment,但向上传值一直是个空白。 典型痛点: 深层嵌套子视图想告诉祖
async let 也能调度同步函数?——Swift 并发隐藏小技巧详解
什么是 async let async let 是 Swift 5.5 引入的「结构化并发」语法糖之一 它允许你把「多个异步操作」并行地扔给后台,然后在需要结果时用 await 一次性收回来 写起来比
深入理解 SwiftUI 中的 `@Observable` 与 `@Bindable`:从原理到实践
引言:为什么需要 @Observable? 在 SwiftUI 的早期版本中,我们使用 @StateObject 和 @ObservedObject 来管理状态,但这些方式依赖于 Observable
Swift 入门到实战:写给 iOS 新人的实用技巧
一定要学好 Optional Swift 的 Optional 不是“语法糖”,而是安全屏障。 变量“可能有值也可能没有”时,编译器强制你显式处理,把空指针崩溃消灭在编译期。 三种常见玩法 玩法 代码
一图看懂 Sendable & @Sendable—— Swift 并发世界的「通行证」到底长什么样?
速览思维导图(先收藏,再阅读) 为什么要有 Sendable? 安全区域 危险区域 单线程、主线程 多任务、TaskGroup、actor 之间 值类型拷贝 引用类型共享 Sendable 就是编译器
Swift Actor 完全指南:从原理到实战,彻底告别数据竞争
为什么需要 Actor? 在 iOS 开发中,并发编程一直是“高并发 → 高崩溃”的重灾区。 传统锁(NSLock、os_unfair_lock、DispatchQueue.barrier)存在两大痛
下一页