Swift 语言基础
语法、闭包、async/await、内存管理。
35 分钟
Swift 语言基础
Swift 是 iOS 开发的核心语言:静态类型、协议导向、内存安全。对照 /roadmaps/ios「Swift 语法」节点,掌握变量、集合、闭包与 async/await 即可读懂 UIKit / SwiftUI 代码。
学习目标
- 掌握变量、常量、可选值与错误处理
- 理解 struct / class / protocol 的区别
- 使用闭包与 async/await 编写异步逻辑
- 了解 ARC 内存管理基础
核心概念
变量、类型与可选值
let name = "CodeRoadMap" // 常量,类型推断为 String
var count = 0 // 变量
var optional: String? = nil // 可选值:有值或 nil
if let title = optional {
print(title)
} else {
print("无标题")
}
// guard 提前退出
func greet(_ user: String?) {
guard let user = user else { return }
print("Hello, \(user)")
}
Swift 用 Optional 显式表达「可能为空」,编译期强制解包,减少 NPE。
集合与协议
struct Lesson: Identifiable, Codable {
let id: Int
var title: String
var completed: Bool
}
var lessons: [Lesson] = [
Lesson(id: 1, title: "Swift 基础", completed: false),
Lesson(id: 2, title: "SwiftUI", completed: false),
]
let titles = lessons.map { $0.title }
let pending = lessons.filter { !$0.completed }
struct 值类型(拷贝语义),class 引用类型(共享实例)。UI 模型常用 struct + Identifiable 协议。
闭包与 async/await
func fetchLesson(id: Int) async throws -> Lesson {
let url = URL(string: "https://api.example.com/lessons/\(id)")!
let (data, _) = try await URLSession.shared.data(from: url)
return try JSONDecoder().decode(Lesson.self, from: data)
}
Task {
do {
let lesson = try await fetchLesson(id: 1)
print(lesson.title)
} catch {
print("请求失败: \(error)")
}
}
async/await 替代回调地狱;throws 与 do/catch 处理错误,类似 Java checked exception 但更轻量。
ARC 简述
Swift 用 ARC(自动引用计数)管理堆内存。weak / unowned 打破循环引用——闭包捕获 self 时常用 [weak self]。
与 Java/Spring 或 React 对照
| Swift | Java | TypeScript / React |
|---|---|---|
let / var | / 普通变量 |