阶段复习:基础部分

📖 复习目标

恭喜完成基础部分 12 章的学习!本章帮助你巩固所有关键概念,为高级进阶做好准备。


✅ 自检清单

完成以下每项,全部打勾后即可进入高级部分:

变量与表达式

  • 能用 letvar 正确声明变量
  • 理解 Swift 默认不可变的设计哲学
  • 能使用字符串插值 \(...) 构建动态文本

基础数据类型

  • 能区分 Int/UInt 家族、Float/Double
  • 能创建和操作 Array、Set、Dictionary
  • 理解可选类型 ? 和可选绑定 if let

控制流

  • 能使用 if/else、switch/case 编写条件逻辑
  • 理解 switch 的穷举性要求(不需要 default)
  • 能使用 guard 进行早期退出
  • 理解 for-in 遍历范围、数组、字典

函数

  • 能定义带外部参数标签和内部参数的函数
  • 理解默认参数值、可变参数、inout 参数
  • 能将函数作为参数和返回值

枚举

  • 能用 enum 定义多种状态
  • 理解关联值(associated values)和原始值(raw values)
  • 能使用 switch 模式匹配枚举

结构体

  • 能定义结构体并理解值类型语义
  • 理解属性观察器(willSet/didSet)
  • 知道 mutating 方法的用途

类与对象

  • 能定义类、实现继承
  • 理解引用类型 vs 值类型的区别
  • 理解 ARC(自动引用计数)和循环引用问题

协议

  • 能定义协议并让类型实现协议
  • 理解协议扩展的默认实现
  • 理解 Swift 的"协议面向编程"(POP)设计理念

泛型

  • 能编写泛型函数和泛型类型
  • 理解类型约束和 where 子句
  • 知道何时使用泛型 vs 协议

错误处理

  • 能使用 do/catch/try 处理错误
  • 理解 throws、try?、try! 的区别
  • 知道 defer 块的执行时机
  • 理解 Result 类型

闭包

  • 能用 {} 语法定义闭包
  • 理解尾随闭包语法
  • 理解逃逸闭包 (@escaping)和非逃逸闭包的区别

并发编程

  • 能使用 async/await 编写异步代码
  • 理解 Actor 和 @MainActor 的隔离机制
  • 理解 Sendable 协议的作用(Swift 6.0 Strict Concurrency)
  • 能使用 Task 和 TaskGroup 编写并发代码

🧪 综合练习

练习 1:通讯录管理

使用结构体、枚举、可选类型和数组,实现一个简易通讯录:

  • 联系人包含姓名、电话(可选)、邮箱(可选)
  • 支持添加、删除、查找联系人
  • 使用枚举区分联系方式(电话/邮箱/地址)

练习 2:异步数据获取

使用 async/await 和错误处理,模拟网络请求:

  • 定义错误类型(网络错误、解析错误、超时)
  • 使用 Result 类型或 throws 处理结果
  • 使用 Task 并发获取多条数据

➡️ 下一步

基础部分完成后,继续学习:

  • 高级进阶: JSON 处理、文件操作、系统服务、异步编程、环境配置
  • 实战精选: 第三方库集成示例

你已经掌握了 Swift 的核心语法!继续前进! 🚀