一尘不染

Swift中的Java接口或目标C协议等效于什么?

swift

在互联网上浏览并搜索Apple提供的书籍后,我一直在寻找新的Swift语言,试图找到Swift中的接口(java)或协议(objective-c)中的等效项。我似乎还是找不到。

有人迅速知道这个组件的名称是什么吗?


阅读 199

收藏
2020-07-07

共1个答案

一尘不染

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样式的模板;本质上,编译器复制声明并将其粘贴到遵守协议的每个对象中。

2020-07-07