Swift 速查 — 簡明參考
Swift 5.9 語法、值類型、協議與最常用標準庫速查手冊,覆蓋約 80% 日常場景。
Swift Swift 5.9
LLVM (swiftc / Swift toolchain) · 多範式(協議導向 · OO · 函數式) · 靜態 · 強類型
學習路徑
先學會 print 與變量綁定 → 掌握值類型(struct/enum)與可選值 Optional → 深入函數、閉包與集合 → 理解協議導向設計與擴展 → 用 do-catch 與 throws 處理錯誤 → 用 async/await 與 DispatchQueue 寫併發 → 再按需學 URLSession、日期與構建測試。FAQ 節適合回頭避坑。
1.Hello World 與構建環境
運行 Swift 程序、SwiftPM 項目與工具鏈。
最小程序
頂層代碼即程序入口。print 輸出。import 導入模塊。
運行與構建
swift 直接運行腳本。swiftc 編譯。swift run 運行包。
SwiftPM 項目
swift package init 初始化。Package.swift 清單。Sources 源碼目錄。
import 導入
import 導入模塊。Foundation 常用。按需導入子模塊。
輸出與插值
print/print(items:)。字符串插值 \(值)。分隔符與終止符。
命令行參數
CommandLine.arguments 獲取參數。第一個是程序路徑。
多文件
同一包多個源文件共享類型。internal 訪問級別。
Xcode 集成
Xcode 項目組織。target、scheme。iOS 開發工作流。
2.變量與常量
var/let 綁定、類型推斷、作用域與命名。
var 與 let
let 常量不可變。var 變量可變。優先使用 let。
類型推斷
編譯器根據字面量與上下文推斷類型。複雜場景顯式標註。
顯式類型
冒號後標註類型。提高可讀性。轉換與字面量兼容。
常量
let 聲明常量。引用類型常量不可變引用。編譯期常量。
遮蔽
內層作用域同名變量遮蔽外層。if/switch 局部常量常見。
作用域
{} 定義作用域。內層可訪問外層。外層不可訪問內層。
命名規範
Swift 命名約定。camelCase、清晰動詞、避免縮寫。
類型轉換
數值類型顯式轉換。init() 構造器。字符串與數值互轉。
3.類型系統
基礎類型、元組、結構體、枚舉與可選值。
基礎類型
Int、Double、Bool、String、Character。值類型。
整數類型
Int8-Int64、UInt 系列。平台 Int。溢出處理。
浮點數
Float/Double 精度。CGFloat 界面座標。運算與特殊值。
元組
多元複合值。命名元素。解構。輕量數據分組。
結構體
struct 值類型。自動成員構造器。屬性與方法。
枚舉
enum 相關值分組。關聯值。原始值。窮盡匹配。
可選值
Optional 表示可能為空。T? 語法。nil 表示無值。
嵌套類型
類型內定義類型。命名空間組織。枚舉攜帶相關類型。
4.值類型與引用
值語義、類引用、寫時複製與內存佈局。
值 vs 引用
struct 值語義拷貝。class 引用共享。語言核心區別。
class 語義
class 引用類型。身份唯一。可變性與線程共享。
寫時複製
數組等值類型內部共享存儲。修改時才真正拷貝。
恆等與相等
=== 引用恆等。== 值相等(Equatable)。區別重要。
weak 與 unowned
weak 弱引用不增計數。unowned 無主引用。打破循環引用。
inout 參數
inout 參數引用傳入。函數內修改原值。& 調用。
指針互操作
UnsafePointer 與 C 互操作。內存管理責任。危險區域。
內存佈局
類型內存佈局。字節對齊。影響性能與互操作。
5.流程控制
if、switch、guard、循環與可選綁定。
if / else
if 條件執行。else if 多分支。條件無需括號。
switch
switch 窮盡匹配。區間、元組、綁定。不需要 break。
guard
guard 提前退出。else 必須退出作用域。else 有 else 分支。
for-in 循環
for-in 遍歷範圍、數組、字典。帶索引遍歷。
while 循環
while 條件循環。repeat-while 先執行後判斷。
break 與 continue
break 退出循環。continue 跳過本輪。帶標籤退出嵌套。
if let
可選綁定解包。guard let 提前。多值同時解包。
模式匹配
switch/if 中的模式。case let、where。類型匹配。
6.函數
函數定義、參數標籤、返回值、函數類型與閉包。
函數定義
func 定義函數。參數與返回值。調用語法。
參數標籤
參數標籤與內部名。_ 省略標籤。可讀性設計。
默認參數值
參數默認值。調用時可省略。必須尾部或都有默認。
返回值
返回值類型。多值用元組。隱式返回單表達式。
可變參數
... 收集多個參數為數組。任意數量。最後一個參數。
inout 參數
inout 修改外部變量。& 傳址。值類型原地修改。
函數類型
函數可作為類型。賦值、傳參、返回。一等公民。
閉包
閉包捕獲上下文。尾隨閉包。簡寫參數。
7.字符串
String 操作、插值、子串、Unicode 與格式化。
String 基礎
String 值類型。字面量與可變性。Character 組成。
插值
\(表達式) 嵌入值。類型安全。任意表達式。
拼接
字符串拼接。append。join。+= 操作符。
多行字符串
三引號多行。縮進裁剪。內插值。 分隔。
常用方法
大小寫、查找、替換、分割、修剪。常用字符串 API。
子串
Substring 引用原串。切片返回 Substring。轉 String 持有。
Unicode
字符由 Unicode 標量組成。碼點。擴展字位簇。
格式化
String(format:) C 風格格式。數字填充與精度。
8.集合
Array、Dictionary、Set、高階函數與區間。
Array
有序值集合。泛型 [T]。增刪改查。
數組操作
切片、替換、合併、查找。常用高階方法。
Dictionary
鍵值對集合。[String: T]。無序。O(1) 查找。
Set
無序唯一元素集合。哈希集合。集合運算。
遍歷
數組/字典/集合遍歷。帶索引。倒序。過濾條件遍歷。
高階函數
map、filter、reduce、compactMap、sorted。函數式處理。
嵌套集合
集合的組合。多維數組、字典內數組、結構體集合。
Range
半開區間 ..<、閉區間 ...。數組切片與循環。
9.內存管理
ARC 引用計數、弱引用、循環引用與內存優化。
ARC
自動引用計數管理類實例。引用計數歸零釋放。
weak/unowned
弱引用不增計數。防止循環引用。訪問已釋放處理。
自動釋放池
autoreleasepool 延遲釋放。大循環內存控制。
拷貝語義
值類型拷貝安全。大類型優化。共享與唯一。
循環引用
兩個類互相強引用形成環。內存泄漏。weak 打破。
棧與堆
值類型棧上、引用類型堆上。分配與性能。
lazy 存儲
lazy 延遲初始化。用到才創建。耗時屬性優化。
內存優化
減少堆分配、複用緩衝、避免大拷貝。性能調優。
10.類與協議
class、繼承、協議、擴展與面向協議設計。
class 定義
類定義屬性與方法。引用類型。初始化器。
繼承
子類繼承父類。存儲屬性、方法。最終類 final。
方法重寫
override 覆蓋方法、屬性、初始化器。super 調用父類。
協議
protocol 定義要求。類型遵守。面向協議設計核心。
協議擴展
extension 提供默認實現。約束擴展。協議默認方法。
擴展
extension 給現有類型加方法。分類組織代碼。
屬性觀察器
willSet/didSet 監聽屬性變化。界面更新、校驗。
計算屬性
get/set 計算值。不存儲。派生數據。
11.錯誤處理
throws、do-catch、try、defer 與自定義錯誤。
Error 協議
Error 協議標記錯誤類型。枚舉定義錯誤分類。
throws
throws 標記可拋函數。throw 拋出錯誤。調用需處理。
do-catch
do 塊中 try。catch 捕獲錯誤。多分支。
try 變體
try 需要 catch。try? 轉可選。try! 強制(崩潰風險)。
自定義錯誤
錯誤攜帶上下文。LocalizedError 描述。錯誤碼。
defer 清理
defer 作用域結束時執行。清理資源。逆序執行。
致命錯誤
fatalError 不可恢復崩潰。precondition 條件檢查。
Result 類型
Result<Success, Failure> 顯式成功或失敗。避免 throws。
12.輸入輸出
命令行輸入、文件讀寫、FileManager 與 Codable。
讀取輸入
readLine 讀取命令行輸入。循環交互。解析數字。
讀取文件
String(contentsOf:) 讀文件。Data 二進制。逐行讀取。
寫入文件
寫入字符串與 Data。追加模式。原子寫入。
FileManager
文件系統操作。創建目錄、刪除、移動、判斷存在。
輸出控制
print 變體。stderr。分隔與終止。字符串描述。
Data 處理
Data 字節容器。互轉字符串。base64 編解碼。
JSONSerialization
JSON 轉字典/數組。反向序列化。JSONSerialization 類。
Codable
Codable 自動序列化。JSONEncoder/Decoder。協議驅動。
13.常見誤區
Swift 新手最容易踩的坑與正確寫法。
強制解包
! 解包 nil 崩潰。優先可選綁定與空合運算符。
可選鏈
?. 鏈式訪問。任一環節 nil 整體 nil。賦值也可。
閉包循環引用
閉包捕獲 self 強引用形成環。捕獲列表 [weak self]。
數組越界
索引越界崩潰。安全訪問 first/last/prefix。檢查邊界。
mutating
struct 方法修改屬性需 mutating。值類型不可變副本。
字符串索引
字符串不能整數下標。字符多字節。用 index 方法。
協議與 Self
協議中使用 Self 約束。associatedtype。類型擦除。
隱式解包
T! 隱式解包可選。使用未初始化崩潰。謹慎使用。
14.併發
GCD、async/await、Task 與 actor 併發模型。
GCD 基礎
DispatchQueue 串行/併發隊列。全局與主隊列。
調度組
DispatchGroup 等待多個任務完成。批量併發彙總。
async/await
現代 Swift 併發語法。異步函數與掛起。結構化併發。
async let
併發執行多個異步調用。綁定獨立子任務。並行等待。
Task
Task 創建併發單元。繼承上下文。取消與優先級。
actor
actor 隔離狀態。避免數據競爭。異步方法訪問。
主線程
UI 操作必須在主線程。線程跳轉。主線程檢查。
線程安全
可變狀態併發訪問保護。鎖、隊列、原子操作。
15.網絡
URLSession、HTTP 請求、異步網絡與 JSON 交互。
URLSession
URLSession 發起網絡請求。配置與委託。會話類型。
GET 請求
發起 GET。async/await 獲取數據。處理響應狀態。
POST 請求
發送 JSON body。表單提交。設置 Content-Type。
異步網絡
async/await 網絡調用。併發請求。取消任務。
URL 構建
URLComponents 安全構建 URL。查詢參數編碼。路徑組合。
下載文件
下載任務保存文件。進度監聽。後台下載。
網絡 JSON
請求 JSON 並用 Codable 解碼。日期與策略處理。
上傳文件
multipart 表單上傳。文件 body。邊界分隔。
16.時間與日期
Date、DateFormatter、日曆運算與計時器。
Date
Date 表示時間點。時區無關的絕對時刻。創建與比較。
日期格式化
DateFormatter 顯示日期。本地化格式。自定義格式。
解析日期
字符串轉 Date。固定格式解析。ISO8601 解析。
日期組件
DateComponents 提取年月日。日曆組件運算。
日曆運算
日期加減天月。下週/下月。Calendar 運算安全。
時間間隔
測量代碼耗時。TimeInterval 秒單位。性能計時。
Timer
定時器重複執行。一次性定時。RunLoop 注意。
日期比較
比較日期先後。判斷同一天。排序與驗證。
17.進程與系統
命令行參數、環境變量、進程操作與文件路徑。
命令行參數
CommandLine 獲取參數。處理參數與選項。
環境變量
讀取環境變量。設置與傳遞。敏感信息注意。
Process
Process 啓動子進程。執行命令。捕獲輸出。
路徑處理
URL 路徑操作。組合、擴展名、文件名。沙盒目錄。
退出碼
程序退出碼。exit 與 fatalError。0 成功非 0 失敗。
信號處理
捕獲系統信號。SIGINT 等。優雅退出。
工作目錄
當前工作目錄獲取與切換。文件相對路徑基準。
進程文件 I/O
標準輸入讀取。標準輸出寫入。管道交互。
18.正則表達式
正則字面量、NSRegularExpression 與模式匹配。
正則基礎
正則語法概念。字符類、量詞、分組。
正則字面量
Swift 5.7 正則字面量 /.../。類型化匹配。捕獲命名。
NSRegularExpression
NSRegularExpression 正則引擎。範圍匹配。兼容舊系統。
匹配
首次匹配、全部匹配、判斷是否匹配。範圍獲取。
捕獲組
提取捕獲組內容。命名捕獲。正則分組引用。
替換
正則替換文本。模板引用捕獲組。條件替換。
分割
按正則分割字符串。分隔符保留與刪除。多分隔符。
常用模式
郵箱、URL、數字、手機號等常用正則模板。
19.構建與工具
swiftc 編譯、SwiftPM 構建、格式與檢查工具。
swiftc 編譯
命令行編譯單文件。生成可執行。優化選項。
SwiftPM 構建
swift build 編譯項目。增量構建。發佈模式。
運行測試
swift test 測試套件。XCTest 與測試目標。
Package.swift
SwiftPM 包清單。目標與依賴聲明。平台配置。
SwiftLint
代碼風格檢查。配置規則。CI 集成。
swift-format
官方代碼格式化工具。格式規則與配置。
xcodebuild
Xcode 工程命令行構建。導出與歸檔。CI 使用。
發佈流程
版本控制、構建發佈、分發。發佈檢查清單。
關於本速查
本頁是 Swift 5.9 的自包含速查手冊,覆蓋語言核心與最常用標準庫在真實項目中約 80% 的常見用法。內容偏向現代慣用法:值類型(struct/enum)、協議導向設計、async/await 結構化併發、if let 模式匹配、以及 Codable 序列化。權威參考見 Swift 官方語言指南與 API 設計規範。 19 個章節各自聚焦一個主題——從第一個程序到可選值、協議、併發與常見誤區。每節拆成 8 個帶示例的小節(每個 5–20 行),共約 150 個主題。代碼片段刻意短小、自解釋。 所有處理都在瀏覽器中完成——無上傳、無追蹤。本頁是 GuruToolkit 免費開發者工具集的一部分;代碼片段可自由使用,無任何擔保。
版本 2.1.0