如何在Swift中将类与协议相符并且可以覆盖协议方法?

时间:2017-11-17 08:40:12

标签: ios swift class mocking protocols

是否有必要使用委托符合协议?如果是的话,是否有人可以编写示例代码来显示相同​​的代码?假设我有一个协议ABC,我想创建一个类来模拟ABC的方法,如何做到这一点?我没有非常明确的协议和代理概念。请解释一下。

3 个答案:

答案 0 :(得分:1)

委托是一种设计模式,允许一个对象在特定事件发生时将消息发送到另一个对象。

  

ObjectA不需要知道对象B的确切类型   足以让对象A知道对象B是否符合   FooDelegateProtocol

     

Alexander的评论。

想象一个对象A调用一个对象B来执行一个动作。一旦行动完成,对象A应该知道B已完成任务并采取必要的行动,这可以在代表的帮助下实现!

Mark Moykens解释说代表团非常好。

Mark Moykens Delegation

对于协议,你可以查看swift文档,有很多很好的例子。

Swift Docs Protocols

对于您的ABC示例:

protocol ABC {
  func exampleFunctionA()
  func examplefunctionB()
}



class ExampleClass: ABC {
  func exampleFunctionA() {
    // your code here
  }

  func examplefunctionB() {
    // your code here
  }


}

答案 1 :(得分:0)

我可以让你了解协议。

一般来说,

协议是每个人都必须遵循的规则。当您实现某些协议时,您编写了协议并将该协议中的某些方法作为可选方法,并根据需要使用少量方法。一旦协议实现了任何想要遵循必须符合该协议的协议。一旦符合意味着,他们就会遵循它,并且必须在其中实施所有必需的方法。

现在来到代表。代表帮助遵循协议。您将编写包含该协议的委托。当您将self分配给委托时,您间接地说该实例正在遵循该protcol并且这些方法在此处。所以你会收到这些方法的回电。

上面的解释是为了让您理解这个概念。您想要查看的内容越多,请参阅网上提供的任何文章/博客。

答案 2 :(得分:-1)

首先,协议方法不需要符合,使用 @objc optional 来定义函数:

@objc optional func webViewDidFinishLoad(webView: UIWebView)

如果没有 @objc optional ,那些方法必须在委托中实现。