结肠后带“类”的协议?

时间:2017-12-17 10:46:11

标签: swift

任何人都可以解释以下协议语法:

protocol AddItemViewControllerDelegate: class {
  func addItemViewControllerDidCancel(_ controller: AddItemViewController)
  func addItemViewController(_ controller: AddItemViewController,
                     didFinishAdding item: ChecklistItem)
}

“班级”做什么?

1 个答案:

答案 0 :(得分:2)

这意味着该协议只能由类采用。所以没有Structure或Enum可以采用这个协议。

  

仅限类协议

     

您可以将协议采用限制为类类型(而不是结构或类型)   枚举)通过将AnyObject协议添加到协议的   继承清单。

protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol {
    // class-only protocol definition goes here
}
     

在上面的示例中,SomeClassOnlyProtocol只能由类类型采用。它的   编写结构或枚举定义的编译时错误   试图采用SomeClassOnlyProtocol。

     

注意

     

在该协议定义的行为时使用仅类协议   要求假定或要求符合类型具有参考   语义而不是价值语义。有关参考和价值的更多信息   语义,请参阅结构和枚举是值类型和类   是参考类型。

参考:Swift Programming Language - Protocols