我一直在研究新的Swift语言,试图找到与Java中的接口或Objective-C中的协议等效的内容。在浏览互联网和搜索Apple提供的书籍之后,我仍然找不到它的名称和语法。请问有人知道Swift中这个组件的名称和语法是什么吗?
Swift中的协议与Objc非常相似,唯一的区别是你可以在类、结构体和枚举上使用它们。
protocol SomeProtocol {
var fullName: String { get } // You can require iVars
class func someTypeMethod() // ...or class methods
}
遵守协议有些不同:
class myClass: NSObject, SomeProtocol // Specify protocol(s) after the class type
你也可以通过默认(可重写)函数实现来扩展协议:
extension SomeProtocol {
// Provide a default implementation:
class func someTypeMethod() {
print("This implementation will be added to objects that adhere to SomeProtocol, at compile time")
print("...unless the object overrides this default implementation.")
}
}
注意:默认实现必须通过扩展添加,而不是在协议定义本身中 - 协议不是具体对象,因此实际上无法附加方法体。将默认实现视为 C 风格的模板;本质上,编译器会将声明复制并粘贴到遵循协议的每个对象中。