2016-07-21 7 views
1

私は、動作を停止した1つのXPCサービスを備えたデスクトップSwiftアプリケーションを持っています。それ以来、私はそれを稼働させることができましたが、それは壊れてしまうことに戻ります。私は最も単純なケースにコードを減らそうとしましたが、理解できない要素があるように感じます。macOS XPCサービスが起動していません

のInitコード:

connection = NSXPCConnection(serviceName: XPCBundleID) 
connection.remoteObjectInterface = NSXPCInterface(withProtocol:UploadServiceProtocol.self) 
connection.resume() 

テスト機能:

func initService(){ 
    let uploaderRemoteObject = connection.remoteObjectProxyWithErrorHandler() { 
    (error) in NSLog("UploadServiceClient - remote proxy error: %@", error) 
    } as! UploadServiceProtocol 
    uploaderRemoteObject.initService?(nil) { (data) in 
     NSLog("UploadServiceClient - initService - Got \(data?.length) bytes.") 
    } 

} 

私は印刷する場合、私は、通常のかもしれ<_NSXPCDistantObjectWithError: 0x618000083980>を得るが、実際のXPCプロセスがスピンアップれることは決してありませんuploaderRemoteObject(およびリモートメソッドはもちろん呼び出されません)。

@objc(UploadServiceProtocol) protocol UploadServiceProtocol { 
optional func initService(action:String?, withReply: (NSData?)->Void) 
} 

そしてXPCのmain.swiftの内容は次のとおりです:

サービスプロトコルがある私はXPCBundleIDが正しいことを確信している、と私はすべてに署名しています

class ServiceDelegate: NSObject, NSXPCListenerDelegate { 
    func listener(listener: NSXPCListener, shouldAcceptNewConnection newConnection: NSXPCConnection) -> Bool { 
     newConnection.exportedInterface = NSXPCInterface(withProtocol: UploadServiceProtocol.self) 
     newConnection.exportedObject = ImageUploader() 
     newConnection.resume() 
     return true 
    } 
} 
let delegate = ServiceDelegate() 
let listener = NSXPCListener.serviceListener() 
listener.delegate = delegate; 
listener.resume() 

注意Mac App Storeのために。何か案は?

+0

こんにちは、私はクライアントとサーバーの両方が迅速で(サーバはlaunchdによってエージェントとして実行され、クライアントはプロンプトコマンドライン実行可能です)、接続は確立できません。クライアント側で 'NSXPCConnection'の' invalidationHandler'を実装しました。おそらくこの問題のデバッグ方法を教えてください。私はどちらの側にも署名していない、あなたはそれが問題になると思いますか?エラーIDを取得し、問題の根本原因を理解するために何がありますか?ありがとう – Zohar81

答えて

0

解決済み:明らかに、XPCリモートプロトコルではオプションの機能を使用できません。 optionalUploadServiceProtocolから削除してください。

関連する問題