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 公寓门禁
相关推荐
碎_浪9 小时前
Mac 壁纸被 MDM 锁住?我做了个 2MB 的开源方案
macos·开源·swift
小牛不牛的程序员1 天前
开源一个 macOS 剪贴板「意图识别」工具——不只是存储,更是理解你复制了什么
macos·swift
apihz2 天前
经纬度制作高清卫星图片免费 API 接口详解
开发语言·ios·swift
00后程序员张3 天前
iOS 打包方式汇总 从 Xcode Archive 到轻量级工具链的 IPA 构建
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
sweet丶4 天前
Swift 黑魔法:`@dynamicMemberLookup`
swift·rxswift
大熊猫侯佩4 天前
SwiftUI 侦探笔记:iPhone 14 失踪的“刘海”与侯佩的像素诡计
swiftui·swift·apple
大熊猫侯佩4 天前
WWDC26 新 @ContentBuilder 修饰符:SwiftUI 终于有了户口本
swiftui·swift·wwdc
东坡肘子4 天前
当 Linux 成为“空气”:容器、Agent 与不再重要的“桌面之争” -- 肘子的 Swift 周报 #143
人工智能·swiftui·swift
wabil6 天前
【LVGL】滑动切换页面的界面优化实践
开发语言·ios·swift
东坡肘子11 天前
SPI 加入 Apple,Swift 迈向自举 -- 肘子的 Swift 周报 #142
人工智能·swiftui·swift