我已经设置了一个协议(protocol)来将一些信息发送回之前的 VC。
我是这样定义的:
protocol FilterViewControllerDelegate: class {
func didSearch(Parameters:[String: String]?)
}
但是使用时有什么区别:
protocol FilterViewControllerDelegate {
func didSearch(Parameters:[String: String]?)
}
什么时候应该使用 : class
协议(protocol)?
最佳答案
swift 4版
AnyObject
添加到这样的协议(protocol)定义中
protocol FilterViewControllerDelegate: AnyObject {
func didSearch(parameters:[String: String]?)
}
意味着只有一个类能够遵守该协议(protocol)。
所以鉴于此
protocol FilterViewControllerDelegate: AnyObject {
func didSearch(parameters:[String: String]?)
}
你可以这样写
class Foo: FilterViewControllerDelegate {
func didSearch(parameters:[String: String]?) { }
}
但不是这个
struct Foo: FilterViewControllerDelegate {
func didSearch(parameters:[String: String]?) { }
}
swift 3版本
:class
添加到这样的协议(protocol)定义中
protocol FilterViewControllerDelegate: class {
func didSearch(Parameters:[String: String]?)
}
意味着只有一个类能够遵守该协议(protocol)。
所以鉴于此
protocol FilterViewControllerDelegate: class {
func didSearch(Parameters:[String: String]?)
}
你可以这样写
class Foo: FilterViewControllerDelegate {
func didSearch(Parameters:[String: String]?) { }
}
但不是这个
struct Foo: FilterViewControllerDelegate {
func didSearch(Parameters:[String: String]?) { }
}
关于swift - 什么时候在 Swift 中使用 `protocol` 和 `protocol: class`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40142623/