OC 的协议和 Swift 协议有以下几个区别:
1. 语法不同:OC 的协议使用 @protocol 关键字定义,而 Swift 的协议使用 protocol 关键字定义。
2. 实现方式不同:OC 的协议只能包含方法声明,而 Swift 的协议可以包含方法、属性、下标等成员的声明。
3. 默认实现不同:Swift 的协议可以提供默认实现,而 OC 的协议不支持默认实现。
4. 可选方法不同:OC 的协议可以定义可选方法,而 Swift 的协议中没有可选方法的概念。在 Swift 中,可以通过在协议中定义 optional 关键字来实现类似可选方法的功能。
5. 多继承不同:OC 的协议支持多继承,一个类可以遵循多个协议;而 Swift 的协议不支持多继承,一个类只能继承自一个父类,但可以遵循多个协议。
6. 泛型不同:Swift 的协议支持泛型,可以定义关联类型来表示某个属性或方法的返回值类型;而 OC 的协议不支持泛型。
总体来说,Swift 的协议比 OC 的协议更加灵活和强大,可以用于更多的场景,并且更符合面向对象编程的思想。