所以我想做这样的事情:
protocol CanShowView: class where Self: UIViewController, SomeDelegate{
func someFunction()
}
extension CanShowView{
func someFunction(){
someView.SomeDelegate = self
}基本上,我希望确保协议只能由同样实现SomeDelegate协议的SomeDelegate来实现,但是xcode对示例中的第一行代码非常着迷。
发布于 2017-10-10 22:48:25
如果您正在使用Swift 4+:
protocol CanShowView {
func someFunction()
}
extension CanShowView where Self: UIViewController & SomeDelegate {
func someFunction() {
someView.SomeDelegate = self
}
}如果Swift 3.0:
protocol CanShowView {
func someFunction()
}
extension CanShowView where Self: UIViewController, Self: SomeDelegate {
func someFunction() {
someView.SomeDelegate = self
}
}这是添加条件扩展的正确方法,而不是在协议定义中。如果您想将协议限制在某种约束范围内,最好的方法是使用associatedType。
https://stackoverflow.com/questions/46677041
复制相似问题