問題タブ [nsxpcconnection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
567 参照

tcpserver - NSXPCConnection でのソケットの使用

NSXPCConnection でソケットを使用すると問題が発生します。

基本的に、メイン プロセスと実行中のヘルパー プロセスがあり、NSXPCConnection を介して確立されます。そのヘルパー プロセスは、サーバーとして機能し、外部接続を受信する特定のポート (111 など) をリッスンする必要があります。

ヘルパー プロセスは、Apple が提供するTCPServerヘルパー クラス (ラッパー アラウンド) を使用してリッスン ソケットを開きます。CFSocketここにあるコード: https://code.google.com/p/iphone-remotepad/source/browse/trunk/RemotePad/TCPServer.h?r=238

でソケットが正常に開かれました- (BOOL)start:(NSError **)error

外部クライアントは 111 ポートで確立できます。(を介して端末でテストしますtelnet localhost 111)。

ただし、ヘルパー プロセスは TCPServer コールバックを受け取りませんTCPServerAcceptCallBack

ヘルパー プロセスでcom.apple.security.network.client資格が有効になっています。

また、ヘルパー プロセスの代わりにメイン アプリで TCPServer を実行し、ポート 111 でサーバーをセットアップし、ポート 111 に接続しようとすると、コールバックが発生します。

ヘルパー プロセスがソケット コールバックを受信しない理由について何か考えはありますか? XPC 関連の問題?

0 投票する
2 に答える
1471 参照

objective-c - Swift アプリで XPC サービスの Objective-C プロトコルを使用する

私は、Swift のみで記述された、Obj-C クラスを持たず、Obj-C ファイルやブリッジ ヘッダーを持たないアプリを持っています。

アプリの資格に影響を与えずにいくつかの機能を追加するために、XPC サービスを追加しようとしています。これは Xcode で作成しました。Xcode の XPC サービスのテンプレートは Obj-C のみです。

これで問題ありません。Obj-C でサービスを記述しましたが、サービスを呼び出したい場合は、サービスへNSXPCConnectionのインターフェイスをセットアップする必要があり、そのためには Swift アプリ コードで参照する必要があります。 XPC ターゲット用に作成した Obj-C プロトコルに。

どうすればいいですか?「Protocol.h」をアプリ ターゲットに追加することはできません。C ヘッダーのルールがありません。これについて私が見つけた他のすべての解説は、フレームワークまたは共通のターゲット内のプロトコルへのリンクにのみ適用されるようです...

0 投票する
1 に答える
871 参照

xcode - NSXPCInterface コンストラクターが Swift のプロトコルを認識しない

Swift で XPC サービスを作成しており、プロトコルを作成しました。

プロトコルを使用して NSXPCInterface の新しいオブジェクトを初期化することにより、エクスポートされたオブジェクトが (私の main.swift で) 実装するインターフェイスを設定しようとすると、次のエラーが発生します。

エラー: タイプ '(MyProtocol).Protocol' (別名 'MyProtocol.Protocol') の値を予期される引数タイプ 'Protocol' に変換できません

誰でもこのエラーで私を助けることができますか?

0 投票する
1 に答える
764 参照

objective-c - SMJobBless と NSXPCConnection

ヘルパー ツールを安全にインストールする方法を示すApple SMJobBlessの例があります。SMJobBlessXPCは、アプリと特権ヘルパー ツール間の通信に Mach ポート経由で XPC (c API) を使用します。

NSXPCConnection (Objective c API) を使用して SMJobBlessXPC が必要です。

0 投票する
1 に答える
502 参照

objective-c - スクリプトで XPCService を削除するにはどうすればよいですか

loginItems によって実行される xpcservices を使用して、os x アプリケーションのプロジェクトを作成します。つまり、サービスはアプリのパス {APP_NAME}.app/Contents/Library/LoginItems に作成され、サービスの実行を担当するのはメイン アプリです。

インストールしたすべてのファイルを削除するために、アンインストーラーを作成しました。サービスを削除する必要があります。私がそれに使用したコマンド:

これは、ターミナルから実行すると正常に動作しますが、スクリプトから実行すると、「アクティビティ モニター」からサービスが削除されますが、サービスはまだステータス -5 の launchctl リストにあります。したがって、新しいバージョンをインストールすると、インストールされた以前のバージョンが使用されます。

スクリプトを xcode から実行しますNSTask。エラーはありません。それはスクリプトがすべきことをします。管理者権限も設定しました:

ターミナルで行ったように削除しないのはなぜですか?

ps:Xcodeから実行すると機能します(アプリがリリースモードであっても)

0 投票する
4 に答える
3021 参照

objective-c - How to synchronously wait for reply block when using NSXPCConnection

I'm using NSXPCConnection and one of my interface call has a reply block, like this:

Which I call like this:

My understanding is that the reply block run asynchronously, and potentially after the method returns.

I want to test the return code synchronously, what's the best way to do it?


To clarify further the snippet above: the proxy object is the remote object obtained from an NSXPCConnection object using the remoteObjectProxy method. This is an important detail as this impact on which queue the reply block is invoked.