协议的Swift实例

Flo*_*Flo 2 protocols interface ipad ios swift

我可以快速创建协议实例吗?

像Java中的接口实例一样?

Java:

public interface test {
    void test();
}

new test() {
    @Override
    public void test() {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

迅速:

protocol ITransmitter {
    func onExecuteSuccess(data:String)
}

//instance???
Run Code Online (Sandbox Code Playgroud)

Shr*_*ada 5

您无法创建协议实例。

例如

protocol ITransmitter {
    func onExecuteSuccess(data:String)
}

var protocolInstance : ITransmitter = ITransmitter() // << Not allowed. This is an error
Run Code Online (Sandbox Code Playgroud)

但是,您可以使用Protocol作为唯一类型来引用代码中的对象。假设您有一个符合该协议的类,但是在您的代码中,您的要求仅仅是能够在其上调用protocol方法,并且您不必理会该类实例支持的任何其他方法。

例如-

class A{
  func foo(){

  }
}
extension A : ITransmitter{

 func onExecuteSuccess(data:String){
    //Do stuff here
  }
}

//This function wants to run the ITransmitter objects, so it uses only protocol //type for its argument. The transmitter can be of any class/struct, but has to //conform to ITransmitter protocol

func runTransmittor(transmitter : ITransmitter){
     //some other statements here..
     transmitter. onExecuteSuccess(data :SomeData){
     }
}
Run Code Online (Sandbox Code Playgroud)