2011-12-15 12 views
4
  1. 別々のアプリケーションはDLLのような形式で同じバイナリを共有できますか?静的ライブラリをコンパイルすることは可能ですが、DLLと同じものとして数えません(つまり、DLLは複数のアプリケーションで共有されるバイナリの1つのコピーですが、スタティックライブラリはアプリケーションを使用するごとに別々に含まれます)。iOSにはDLL/IPC /プロセス産卵に相当するものがありますか?

  2. それぞれのアプリは完全に別々のものですか?通信やデータ共有のために異なるアプリで使用できるIPCやファイル共有の仕組みはありますか?

  3. 新しいスレッドに加えて新しいプロセスを作成することは可能でしょうか?

答えて

4

アプリケーション間で実行可能ファイルを共有することはできません。 Appleは、すべてのアプリがスタンドアロンで機能することを要求しています。ただし、UIDocumentInteractionControllerを使用して、理解していないファイルを処理する別のプログラムを取得し、「クイックビュー」を利用できるようにすることができます。それがMailの仕組みです。

iOS 5では、同じベンダーのプログラムがキーチェーンを共有できますが、iCloudストレージはディスクに共有できません。サポートされているファイルタイプを宣言できるため、UIDocumentInteractionControllerを使用して、あるアプリから別のアプリにファイルへの一時アクセスをプッシュできます。同様の方法でカスタムURLスキームを使用すると、データの断片を渡すことができます。

一般的に、iOSでは一度に1つのユーザープロセスのみがアクティブになることがあります。バックグラウンド処理は基本的にイベントベースです。したがって、自分のために2番目のプロセスを作成することはできません。

1

jailbroken電話をターゲットにしていて、AppleのApp Storeをバイパスしている場合を除き、基本的に上記のすべてには該当しません。あなたが脱獄した場合、私はあなたがMac OS Xで持っているものと同様のオプションを持っていると信じています。

+0

ありがとうございます。 2) - アプリケーション内の異なるクラスがNSNotificationCenterを使用して相互に通信できる場合、NSNotificationCenterも2つのアプリケーション間で使用できますか? – Gruntcakes

+1

NSNotificationCenterはアプリ内通信専用です。 – Tommy

4
  1. jailbreak携帯電話用に開発している場合は、これを行うことができます。ない otherwise.Onジェイルブレイク電話、あなたは が

  2. アプリをサンドボックス化されている(多くの MacOSの上など)DYLD_INSERT_LIBRARIES環境VAR経由でロードすることができ.dylibsまたは共有ライブラリを作成することができます。ただし、アプリ間で通信する方法はいくつかあります。あなたは

    (a)のcustomURL scheme (also mentioned by Tommy above) (もしあれば)あなたが アプリ、then you can use Message ports (CFMessagePortCreateRemote)

    を伝えるコントロールしている場合(b)の

    起動アプリにアプリを起動し、いくつか パラメータを送信するアプリに関連付けられているを使用することができます は

    あなたが通信アプリケーションをコントロールしている場合(c)に、もちろんyou could use Darwin NOtification center for distributed apps.

    (b)と(c)への期待が 通信アプリがすべて実行されていることです。 iOSの場合、前景は のプロセスが1つしかないため、バックグラウンドアプリとして持っていなければならず、 はiOSプラットフォームの特定の種類のアプリに限定されています。

+0

iOS 7以降、CFMessagePortは使用できません。 –

関連する問題