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