附录
附录 3:术语表与参考资料
Swift 协议化编程(Protocol-Oriented Programming, POP)涉及大量专业术语,理解这些术语是掌握本书内容的基础。本节提供了一个术语表,列出书中常用的关键概念及其简要解释,并附上相关参考资料,方便读者深入学习或复习。这些术语涵盖了协议设计、泛型、并发等核心领域。
术语表
协议(Protocol)
- 定义:Swift 中用于定义行为和要求的接口,可以由结构体、枚举或类遵循。
- 示例:
protocol Printable { func print() } - 参考:Swift.org - Protocols(https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)。
协议扩展(Protocol Extension)
- 定义:为协议提供默认实现或额外功能的机制,增强复用性。
- 示例:
extension Printable { func print() { print("Default") } } - 参考:Swift.org - Protocol Extensions(https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID277)。
关联类型(Associated Type)
- 定义:协议中定义的占位符类型,由遵循者指定具体类型,常用于泛型协议。
- 示例:
protocol Container { associatedtype Item } - 参考:Swift.org - Generics(https://docs.swift.org/swift-book/LanguageGuide/Generics.html)。
泛型(Generics)
- 定义:允许类型或方法在定义时不指定具体类型,增强代码灵活性和复用性。
- 示例:
func swap<T>(_ a: inout T, _ b: inout T) {} - 参考:Swift.org - Generics(https://docs.swift.org/swift-book/LanguageGuide/Generics.html)。
值语义(Value Semantics)
- 定义:数据复制时独立,不共享状态,Swift 中结构体和枚举具有值语义。
- 示例:
struct Point { var x: Int } - 参考:WWDC 2015 - Protocol-Oriented Programming(https://developer.apple.com/videos/play/wwdc2015/408/)。
引用语义(Reference Semantics)
- 定义:数据通过引用共享状态,Swift 中类具有引用语义。
- 示例:
class Car { var speed: Int = 0 } - 参考:Swift.org - Classes and Structures(https://docs.swift.org/swift-book/LanguageGuide/ClassesAndStructures.html)。
依赖注入(Dependency Injection)
- 定义:一种设计模式,通过外部传入依赖而非内部创建,降低耦合。
- 示例:
init(service: DataService) - 参考:《Advanced Swift》 - Chapter 5。
动态分派(Dynamic Dispatch)
- 定义:运行时根据对象类型决定调用哪个方法,协议默认使用动态分派。
- 示例:调用协议方法时通过虚表(vtable)分派。
- 参考:Swift.org - Methods(https://docs.swift.org/swift-book/LanguageGuide/Methods.html)。
静态分派(Static Dispatch)
- 定义:编译期确定方法调用,泛型和
final方法使用静态分派,性能更高。 - 示例:
final func process() {} - 参考:objc.io - Swift Performance(https://www.objc.io/issues/7-swift/swift-performance/)。
- 定义:编译期确定方法调用,泛型和
异步协议(Async Protocol)
- 定义:支持异步方法的协议,通常与
async/await结合使用。 - 示例:
protocol AsyncFetcher { func fetch() async -> Data } - 参考:Swift Evolution - SE-0296(https://github.com/apple/swift-evolution/blob/main/proposals/0296-async-await.md)。
- 定义:支持异步方法的协议,通常与
条件性扩展(Conditional Extension)
- 定义:使用
where子句为协议或类型添加条件约束的扩展。 - 示例:
extension Array where Element: Equatable {} - 参考:Swift.org - Extensions(https://docs.swift.org/swift-book/LanguageGuide/Extensions.html)。
- 定义:使用
模块化开发(Modular Development)
- 定义:将系统拆分为独立模块的开发方式,协议常用于定义模块接口。
- 示例:见第 11 章第 2 节。
- 参考:《Swift 编程语言》 - Modules。
参考资料
以下是术语表中提到的资源和其他推荐参考的汇总:
Swift 官方文档
- 链接:https://docs.swift.org/swift-book/
- 内容:涵盖语言指南、标准库和协议相关特性,是最权威的参考。
Swift Evolution
- 链接:https://github.com/apple/swift-evolution
- 内容:Swift 新特性的提案和讨论,了解协议功能的演进。
WWDC 视频
- 推荐:
- WWDC 2015: Protocol-Oriented Programming in Swift(https://developer.apple.com/videos/play/wwdc2015/408/)
- WWDC 2021: Meet Async/Await in Swift(https://developer.apple.com/videos/play/wwdc2021/10132/)
- 内容:Apple 官方对 POP 和新特性的讲解。
- 推荐:
书籍
- 《Advanced Swift》(Chris Eidhof 等):深入协议、泛型和性能。
- 《The Swift Programming Language》(Apple):基础参考。
社区文章
- Swift by Sundell(https://www.swiftbysundell.com):实用技巧和案例。
- NSHipster(https://nshipster.com):协议相关的高级话题。
工具
- Xcode Documentation:内置 API 和协议参考。
- Instruments:分析协议分派性能。
使用建议
- 快速查阅:遇到不熟悉的术语时,直接在本表中查找定义和示例。
- 深入学习:通过参考资料链接,探索术语的背景和应用。
- 实践结合:结合本书章节(如第 2 章、第 4 章),用代码验证术语含义。
小结
本术语表整理了 Swift 协议化编程中的核心概念,并提供了权威参考资料。这些术语和资源是理解本书内容、应对面试以及深入学习的基础。建议读者将其作为工具书,随时查阅和补充。
