ios - 协议(protocol)的 Swift 实例

标签 ios swift ipad interface protocols

我可以在 swift 中创建一个协议(protocol)实例吗?

像 java 中的接口(interface)实例?

java :

public interface test {
    void test();
}

new test() {
    @Override
    public void test() {
        //...
    }
}

swift :

protocol ITransmitter {
    func onExecuteSuccess(data:String)
}

//instance???

最佳答案

您不能创建协议(protocol)实例。

例如

protocol ITransmitter {
    func onExecuteSuccess(data:String)
}

var protocolInstance : ITransmitter = ITransmitter() // << Not allowed. This is an error

但是您可以使用协议(protocol)作为唯一类型在代码中引用对象。假设您有一个符合此协议(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){
     }
}

关于ios - 协议(protocol)的 Swift 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36468736/

相关文章:

ios - iPhone/iPad iOS7 中的设备方向问题

objective-c - 通知所有已加载的 ViewController 某个事件

c# - JsonFormatter.SerializerSettings ReferenceLoopHandling.Ignore 导致 EF 模型无限循环

swift - 拆分字符串导致类型 'Any?' 的值没有成员 'components'

ios - iPad Web 应用启动画面在横向模式下无法工作

ios - 标题中的按钮用于推送新的 View Controller

swift - 在 TableView 中使用未解析的标识符 'section'

ios - 如何在带有圆角的 UITextField 上添加阴影?

ipad - 我应该为 iPad 网络应用程序使用什么技术/框架?

iphone - 如何修复 10 分钟后锁定和解锁屏幕时发生的崩溃?