64 ビットの Cocoa アプリケーションで次のことを行う必要がある問題を解決している最中です。
- アプリケーション内から 32 ビットの Cocoa ヘルパー ツール (コマンド ライン ツール) を生成します。このヘルパーはファイル (正確には QuickTime ムービー) を開き、32 ビットのみの API (Quicktime-C API) を使用してそのファイルに関する情報にアクセスします。
- 32 ビット プロセスから収集されたデータは、64 ビット アプリケーションに戻す必要があります。
- 64 ビット アプリは、32 ビット プロセスが完了するまで待ってから続行する必要があります。
Cocoa でこれを実現する方法はたくさんありますが、私が収集したものから、これらは 2 つのアプローチを取ることができます。
オプション 1: パイプを使用した NSTask
- NSTask を使用して 32 ビット プロセスを生成する
- NSTasks stdoutput をパイプにリダイレクトし、64 ビット プロセスでそのパイプからデータを読み取ります。
- パイプからデータを解析します。これには、stdout からデータ (int、float、string など) への文字列の変換が含まれます。
オプション 2: NSDistributedNotificationCenter を使用した NSTask
- NSTask を使用して 32 ビット プロセスを生成する
- 32 ビット プロセスでデータの準備ができたら、NSNotification を分散通知センターに送信し、関連するすべてのデータを含むイベントに辞書を含めます。
- 64 ビット アプリで、同じ NSNotification にサブスクライブします。
それで、StackOverflowers に対する私の質問は、どのオプションが「より良い」ものですか?
どちらがより良い方法ですか?
どちらがより効率的ですか?
関与するコードが少なくなるように思われるため、オプション 2 に傾いています。これら 2 つのアプローチがうまくいかない場合、これを行うためのより良い方法はありますか?