总结
| 特性 | Objective-C 协议 | Swift 协议 |
|---|---|---|
| 可选方法 | 支持 @optional
|
默认不支持,需标记为 @objc 和 @optional
|
| 协议扩展 | 不支持 | 支持 |
| 值类型支持 | 仅支持类 | 支持类、结构体、枚举 |
| 关联类型 | 不支持 | 支持 |
| 协议组合 | 不支持 | 支持 |
| 属性读写权限 | 无法指定 | 支持 { get } 和 { get set }
|
| 默认实现 | 不支持 | 支持 |
| 协议继承 | 支持 | 支持 |
| 泛型协议 | 不支持 | 通过关联类型实现 |
| 一致性检查 | conformsToProtocol: |
is 和 as?
|
Swift 的协议更现代化、灵活,支持更多特性,如协议扩展、关联类型和值类型支持,使其在设计和实现上更强大。







网友评论