Swift 语法速通:iOS 开发必会的 8 大核心概念(图解+类比)

Struct vs Class:地图复印 vs 谷歌文档

维度 struct(值类型) class(引用类型)
传递行为 复印一份 同一把钥匙
内存位置 栈(快) 堆+ARC
是否继承
举例 PointString UIViewController
swift 复制代码
let a = Point(x: 1, y: 2)   // struct
var b = a                   // 复印
b.x = 99                    // 改复印本
print(a.x)                  // 原图仍是 1

生活类比:

  • struct = 纸质地图复印 → 朋友圈圈点点不影响你那份。
  • class = 谷歌文档 → 任何人改动实时同步。

闭包 Closures:外卖"到楼请打电话"

swift 复制代码
let greet: (String) -> String = { "Hello, \($0)!" }

类比:下单外卖时写下的配送备注(闭包),骑手(系统)在到达时才执行;备注里可以"捕获"你房间号(上下文变量)。

Optional & ??:礼物盒与备用名字

swift 复制代码
var nickname: String? = nil
let screenName = nickname ?? "Guest"

三步记忆:

  1. 礼物盒(Optional)→ 可能有表,可能是空。
  2. 必须先打开(unwrap)才能用。
  3. 没礼物?用备用名字"Guest"------这就是 ??(Nil-Coalescing)。

Enum 带关联值:电影票附赠"隐藏彩蛋"

swift 复制代码
enum Ticket {
    case movie(name: String)
    case concert(artist: String, seat: String)
}
let t = Ticket.movie(name: "奥本海默")

类比:票根(enum 值)本身告诉你活动类型,同时附带不同信息:电影→片名;演唱会→歌手+座位。一张票搞定所有场景,编译器还强制你穷尽处理所有 case,告别魔法字符串。

Protocol + 扩展:驾照+全国通用交规

swift 复制代码
protocol Drivable {
    var speed: Int { get set }
    func drive()
}
extension Drivable {
    func stop() { print("Stopped.") }   // 默认实现
}

类比:

  • 协议 = 驾照考试清单(必须会刹车、打灯)。
  • 协议扩展 = 全国统一驾驶手册,不用再给每位司机重印一本。

Concurrency:服务员同时盯 N 桌

swift 复制代码
Task {
    let data = await fetchData()   // 后厨做饭
    updateUI(data)                 // 主线程上菜
}

类比:优秀服务员(系统)不会死等厨房,而是先去给别桌点单;菜好了异步回调再上菜,顾客(UI)始终流畅。

Error Handling:ATM 的友好提示

swift 复制代码
enum ATMError: Error { case noCash; case invalidCard }

func withdraw(amount: Int) throws -> Cash {
    guard amount <= balance else { throw ATMError.noCash }
    return Cash(amount)
}

类比:卡被吞、余额不足,ATM 不会爆炸,而是亮出清晰提示;同理,Swift 用 do-try-catch 让程序优雅降级而不是闪退。

Access Control:公寓门禁等级

关键字 可见范围 类比
open 全宇宙可继承 小区大门,还能改规则
public 全宇宙可见 小区花园,只能看不能改
internal(默认) 同模块 住户层电梯
fileprivate 同文件 自家客厅
private 同作用域 卧室

一页速查表(保存到手机)

概念 关键字/示例 生活锚点
值类型 struct 纸质地图复印
引用类型 class 谷歌文档
闭包 { } 外卖备注
空值处理 ?? 备用名字
枚举 enum Case(let info) 电影票附赠信息
协议 protocol + extension 驾照+通用手册
并发 await / Task 服务员多桌
错误处理 do-try-catch ATM 提示
访问控制 private...open 公寓门禁
相关推荐
四眼蒙面侠1 天前
深入 SwiftWork(第 0 篇):用 SwiftUI 构建一个 Agent 可视化工作台
swift·openagentsdk
sakiko_2 天前
UIKit学习笔记4-使用UITableView制作滚动视图
笔记·学习·ios·swift·uikit
四眼蒙面侠2 天前
深入 Open Agent SDK(番外篇):实战验证——把 SDK 塞进一个 macOS 原生 Agent 应用
swift·claudecode·bmad·agentsdk·openagentsdk
2501_915106323 天前
在Mac上搭建iOS开发环境的详细步骤与注意事项
ide·vscode·macos·ios·个人开发·swift·敏捷流程
harder3214 天前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
sakiko_4 天前
UIKit学习笔记2-组件嵌套、滚动视图等
笔记·学习·objective-c·swift·uikit
四眼蒙面侠4 天前
深入 Open Agent SDK(五):会话持久化与安全防线
swift·claudecode·bmad·openagentsdk
茶底世界之下5 天前
诡异!String 参数在闭包里变成了 <uninitialized>,我排查了整整两天
ios·xcode·swift
四眼蒙面侠5 天前
深入 Open Agent SDK(四):多 Agent 协作——子代理、团队与任务编排
swift·agentsdk·openagentsdk
东坡肘子5 天前
Swift 并发正被更广泛地接纳 -- 肘子的 Swift 周报 #133
人工智能·swiftui·swift