5

I'm creating a XPC service in swift, and I created my protocol:

protocol MyProtocol {

func myFunc()

}

When I try to set the interface that the exported object implements (in my main.swift), by initialising a new object of NSXPCInterface with protocol, I get an error:

/// This method is where the NSXPCListener configures, accepts, and resumes a new incoming NSXPCConnection.
func listener(listener: NSXPCListener, shouldAcceptNewConnection newConnection: NSXPCConnection) -> Bool {
    // Configure the connection.
    // First, set the interface that the exported object implements.
    newConnection.exportedInterface = NSXPCInterface(MyProtocol)

Error is: Cannot convert value of type '(MyProtocol).Protocol' (aka 'MyProtocol.Protocol') to expected argument type 'Protocol'

Can anyone help me with this error?

gbdavid
  • 1,639
  • 18
  • 40

1 Answers1

6

To reference the protocol's type, you need to use .self on it:

 newConnection.exportedInterface = NSXPCInterface(withProtocol: MyProtocol.self)

You also have to add @objc to your protocol declaration:

@objc protocol MyProtocol {
    // ...
}
natevw
  • 16,807
  • 8
  • 66
  • 90
Kent
  • 2,343
  • 13
  • 21