评论

收藏

[iOS开发] Swift中protocol的关键字笔记

移动开发 移动开发 发布于:2021-06-25 10:08 | 阅读数:294 | 评论:0

  一、mutating
  mutating 关键字的作用是为了能在该方法中修改 struct 或是 enum 的变量,在类中实现协议方法不用写mutating关键字
protocol ExampleProtocol {
  var simpleDescription: String { get }
  mutating func adjust()
  mutating func newTest()
}
class SimpleClass: ExampleProtocol {
  var simpleDescription: String = "A very simple class."
  var anotherProperty: Int = 69105
  func adjust() {
    simpleDescription += "  Now 100% adjusted."
  }
  
  func newTest() {
    print("Jiacheng - SimpleClass -> ExampleProtocol -> newTest")
  }
}
  在枚举(enum)和机构体(struct)中遵守协议时,如果在实现方法中改变了自己的变量,则方法的声明和实现都需要加mutating关键字,否则会报错;如果没有改变变量,则不需要加mutating关键字。
DSC0000.png

  二、Swift和OC中protocol的差异
  1. OC中的协议只能在类中实现,而Swift中的协议既可在类中实现,也可在枚举和机构体中实现;
  2. OC的协议方法有可选关键字,Swift没有,因此在Swift中想给协议方法添加可选关键字,则必须给protocol添加@obj关键字,声明这是个OC协议;
DSC0001.png

  3. 枚举和结构体无法实现添加@obj关键字的协议,该协议方法也无法添加mutating关键字。
DSC0002.png


关注下面的标签,发现更多相似文章