swift中java接口或Objective c协议的等价物是什么?

时间:2014-06-05 22:54:39

标签: ios macos interface protocols swift

我一直在寻找新的Swift语言试图在互联网上浏览后找到Swift中接口(在java中)或协议(在objective-c中)的等价物在Apple提供的书中搜索,我似乎无法找到它。

有没有人知道swift中这个组件的名称是什么?它的语法是什么?

2 个答案:

答案 0 :(得分:46)

Protocols in 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风格的模板;基本上,编译器复制声明并将其粘贴到符合协议的每个对象中。

答案 1 :(得分:10)

swift也有协议,here是相关文档: