来源书籍

Swift编程权威指南

编程语言类

工程实践(高浓度 + 低稳定性)

- 高浓度:书中在值类型/引用类型语义、协议导向编程、写时复制(COW)、ARC内存管理、泛型系统等章节 不满足于罗列语法,而是深入解释设计取舍的原因——例如第18章从零实现COW机制解释为什么值类型复制不会 带来无谓的内存开销,第19/23章讲协议扩展如何取代传统继承实现代码复用。 - 低稳定性:全书示例代码强绑定Swift 3.0与Xcode 8(2016年前后),大量语法细节(错误处理写法、字符串 索引API、闭包标注等)已随Swift 5+演进而变化;且第26/27/28章大篇幅是Xcode IDE操作步骤和界面截图讲解, 时效性低。

类别清单覆盖

5/8

已覆盖 5 补充生成 0 未覆盖 3

全书概览

Swift编程权威指南(第2版)

Skill 版本:v6(2026-08-28 按 v6 规则续补;既有 v1 章节卡片、实践卡与类别核对保留)

类别:编程语言类

四象限结论:工程实践(高浓度 + 低稳定性)

理由: - 高浓度:书中在值类型/引用类型语义、协议导向编程、写时复制(COW)、ARC内存管理、泛型系统等章节 不满足于罗列语法,而是深入解释设计取舍的原因——例如第18章从零实现COW机制解释为什么值类型复制不会 带来无谓的内存开销,第19/23章讲协议扩展如何取代传统继承实现代码复用。 - 低稳定性:全书示例代码强绑定Swift 3.0与Xcode 8(2016年前后),大量语法细节(错误处理写法、字符串 索引API、闭包标注等)已随Swift 5+演进而变化;且第26/27/28章大篇幅是Xcode IDE操作步骤和界面截图讲解, 时效性低。

章节进度追踪表

章节号 章节标题 精读/略读 状态 卡片数
前言 前言 略读 done 0
1 起步 略读 done 0
2 类型、常量和变量 精读 done 2
3 条件语句 略读 done 0
4 精读 done 3
5 switch语句 精读 done 2
6 循环 略读 done 0
7 字符串 精读 done 2
8 可空类型 精读 done 4
9 数组 精读 done 0
10 字典 精读 done 1
11 集合 精读 done 1
12 函数 精读 done 3
13 闭包 精读 done 3
14 枚举 精读 done 3
15 结构体和类 精读 done 2
16 属性 精读 done 3
17 初始化 精读 done 2
18 值类型与引用类型 精读 done 5
19 协议 精读 done 2
20 错误处理 精读 done 2
21 扩展 精读 done 1
22 泛型 精读 done 3
23 协议扩展 精读 done 2
24 内存管理和ARC 精读 done 3
25 Equatable和Comparable 精读 done 2
26 第一个Cocoa应用 略读 done 0
27 第一个iOS应用 略读 done 0
28 互操作 精读 done 2
29 结语 略读 done 0

待关联术语

术语名 出现章节 一句话语境

引用文献

标题 类型 出现章节 一句话语境
《Objective-C编程》 第28章 作者建议不熟悉Objective-C的读者参考此书深入学习,本书互操作章节仅讲桥接机制不讲语言本身

实践卡进度

序号 实践标题 实践方式 状态 关联章节 产出
1 验证struct内嵌class属性会破坏值语义直觉 真实任务 done 值/引用语义相关章节 struct内嵌class对比记录
2 实测整数溢出陷阱与溢出运算符的行为差异 真实任务 done 整数类型相关章节 溢出崩溃/环绕对照记录
003 审查闭包捕获 self 的泄漏风险 真实任务 done 第24章 内存管理和ARC 闭包捕获审计表
004 设计协议扩展默认实现边界表 真实任务 done 第23章 协议扩展 默认实现覆盖规则表
005 复现实测写时复制触发点 真实任务 done 第18章 值类型与引用类型 COW 对照实验记录

类别清单核对(编程语言类)

维度 覆盖状态 关联卡片标题或未覆盖理由
类型系统 已覆盖 类型推断与类型注解;泛型用占位类型换取跨类型复用而不丢失类型安全;类型约束限定泛型占位类型的能力;协议不能泛型化改用关联类型
内存管理模型 已覆盖 ARC用引用计数取代垃圾回收;循环强引用与weak打破所有权倒置;闭包捕获self同样制造循环强引用
并发/并行模型 未覆盖 全书成书于Swift 3.0/Xcode 8时代(async/await、actor等并发特性于Swift 5.5才引入),检索全书未发现线程、GCD、并发相关的实质性讲解
错误处理机制 已覆盖 可空类型把缺失值收编进类型系统;强制展开与可空实例绑定的安全性分野;throws与do-catch是编译期强制的错误传播;可恢复错误与不可恢复错误的分野
编译/执行模型 未覆盖 书中零星提及”编译器”“特化”等行为(如泛型特化、枚举内存布局计算),但没有章节系统讲解Swift的编译流程、AOT/JIT归属或字节码设计
模块/包与命名空间设计 已覆盖 访问控制五级模型;throws与do-catch卡片中提及Swift.Error全名消歧反映的隐式模块命名空间
语言设计哲学与取舍 已覆盖 贯穿全书多张卡片,如整数溢出默认触发陷阱、switch必须全覆盖且默认不穿透、值语义与引用语义的本质区别等
元编程/反射/宏能力 未覆盖 检索全书未发现反射(Mirror)或宏相关内容;Swift的宏系统直到Swift 5.9才引入,晚于本书成书年代
性能特性与其代价 部分覆盖 写时复制让值语义摆脱性能负担;字符串禁止整数下标的原因(O(n)遍历代价);未见到对”zero-cost abstraction”这一术语本身的系统讨论

精读章节文件定位(内部备忘,供断点续读)

  • 第2章:text00000.html 行1391-1704
  • 第4章:text00000.html 行2334-3135
  • 第5章:text00000.html 行3135-4527
  • 第7章:text00000.html 行5203-5746
  • 第8章:text00000.html 行5746-6613
  • 第9章:text00000.html 行6623-7468(续text00001.html 行1-106)
  • 第10章:text00001.html 行106-773
  • 第11章:text00001.html 行773-1365
  • 第12章:text00001.html 行1365-2517
  • 第13章:text00001.html 行2517-3781
  • 第14章:text00001.html 行3790-5169
  • 第15章:text00001.html 行5169-6900
  • 第16章:text00001.html 行6900-7636(续text00002.html 行1-711)
  • 第17章:text00002.html 行711-2267
  • 第18章:text00002.html 行2267-3776
  • 第19章:text00002.html 行3785-5021
  • 第20章:text00002.html 行5021-6924
  • 第21章:text00002.html 行6924-7607
  • 第22章:text00002.html 行7607-7883(续text00003.html 行1-962)
  • 第23章:text00003.html 行962-1805
  • 第24章:text00003.html 行1805-2992
  • 第25章:text00003.html 行2992-4052
  • 第28章:text00003.html 行6697-7026(续text00004.html 行1-973)

章节与卡片

02 类型、常量和变量

  1. 类型推断与类型注解 普通读书笔记卡
  2. let优先于var的不可变默认 普通读书笔记卡

04 数

  1. 整数溢出默认触发陷阱 普通读书笔记卡
  2. 整数类型间禁止隐式转换 普通读书笔记卡
  3. 浮点数的尾数指数表示与精度陷阱 普通读书笔记卡

05 switch语句

  1. switch必须全覆盖且默认不穿透 普通读书笔记卡
  2. 值绑定与where子句构成的模式匹配 普通读书笔记卡

07 字符串

  1. 扩展字形簇是Swift字符的设计单位 普通读书笔记卡
  2. 字符串禁止整数下标的原因 普通读书笔记卡

08 可空类型

  1. 可空类型把缺失值收编进类型系统 普通读书笔记卡
  2. 强制展开与可空实例绑定的安全性分野 普通读书笔记卡
  3. 隐式展开可空类型与推断的安全默认 普通读书笔记卡
  4. 可空链式调用与nil合并运算符 普通读书笔记卡

10 字典

  1. 字典键必须可散列 普通读书笔记卡

11 集合

  1. 数组字典集合的三向权衡 普通读书笔记卡

12 函数

  1. 外部参数名与内部参数名分离 普通读书笔记卡
  2. guard语句提前退出与作用域穿透 普通读书笔记卡
  3. 函数类型使函数成为一等公民 普通读书笔记卡

13 闭包

  1. 闭包捕获变量形成持久化状态 普通读书笔记卡
  2. 闭包是引用类型 普通读书笔记卡
  3. 函数式编程四大支柱 普通读书笔记卡

14 枚举

  1. switch枚举全覆盖的面向未来设计 普通读书笔记卡
  2. 关联值让枚举成为代数数据类型 普通读书笔记卡
  3. 递归枚举与indirect装箱 普通读书笔记卡

15 结构体和类

  1. 继承是类独有的能力 普通读书笔记卡
  2. static与class关键字的可重写性差异 普通读书笔记卡

16 属性

  1. 惰性属性与计算属性的取舍 普通读书笔记卡
  2. 属性观察者willSet与didSet 普通读书笔记卡
  3. 访问控制五级模型 普通读书笔记卡

17 初始化

  1. 指定初始化方法与便捷初始化方法的委托链 普通读书笔记卡
  2. 初始化方法默认不被子类继承 普通读书笔记卡

18 值类型与引用类型

  1. 值语义与引用语义的本质区别 普通读书笔记卡
  2. 相等与同一是两个不同的问题 普通读书笔记卡
  3. 结构体与类的选择准则 普通读书笔记卡
  4. 写时复制让值语义摆脱性能负担 普通读书笔记卡
  5. 值类型内嵌引用类型会破坏复制直觉 普通读书笔记卡

19 协议

  1. 协议解耦接口与实现并可作为类型使用 普通读书笔记卡
  2. 协议继承是需求叠加而非强耦合 普通读书笔记卡

20 错误处理

  1. throws与do-catch是编译期强制的错误传播 普通读书笔记卡
  2. 可恢复错误与不可恢复错误的分野 普通读书笔记卡

21 扩展

  1. 扩展只能加行为不能加存储 普通读书笔记卡

22 泛型

  1. 泛型用占位类型换取跨类型复用而不丢失类型安全 普通读书笔记卡
  2. 类型约束限定泛型占位类型的能力 普通读书笔记卡
  3. 协议不能泛型化改用关联类型 普通读书笔记卡

23 协议扩展

  1. 协议扩展提供默认实现替代继承共享代码 普通读书笔记卡
  2. where子句限定协议扩展的生效范围 普通读书笔记卡

24 内存管理和ARC

  1. ARC用引用计数取代垃圾回收 普通读书笔记卡
  2. 循环强引用与weak打破所有权倒置 普通读书笔记卡
  3. 闭包捕获self同样制造循环强引用 普通读书笔记卡

25 Equatable和Comparable

  1. 实现最小运算符换取整族比较能力 普通读书笔记卡
  2. 运算符本质是声明为静态方法的全局函数 普通读书笔记卡

28 互操作

  1. 桥接头文件让两种语言互相看见对方 普通读书笔记卡
  2. 值类型对Objective-C不可见 普通读书笔记卡

相关主题

暂无公开主题。