Swift学习笔记-可选协议
在 Objective-C 中的协议方法分为可选 @optional
和必须 @required
两种。但是在 Swift 中则不同,所有的协议方法都是必须的。如果我们想要声明一个可选的接口,这该怎么做呢?
上代码:
1 | @objc protocol OptionalProtocol { |
这是我们需要在协议定义之前加上 @objc
修饰,实际上是让这个协议本身被定义为 Objective-C 的。这里的声明和 Objective-C 不同的是没有 @
做开头。而且在 Swift 中,所有的前缀修饰符和声明都是完全分开的。也就是说必须为每一个声明都添加一个修饰符。对于没有修饰符的方法来说,他们都是必须实现的。
可选的协议不能被 Struct 和 enum 类型实现,也就是说只能被 class 实现,struct 和 enum 类型中不能包括可选方法或者属性,这算是一个弊端吧。