SpringBoard で作成した変数に、他の通常のアプリケーションからアクセスできないことがわかりました。でも今は、グローバル環境でステータスを効率的に共有できるフラグ変数を作りたいと思っています。
あるパスで作成されたファイルでそれができると思いましたが、それでは十分な速度ではない可能性があります。
これを行う方法を知っている体はありますか?
SpringBoard で作成した変数に、他の通常のアプリケーションからアクセスできないことがわかりました。でも今は、グローバル環境でステータスを効率的に共有できるフラグ変数を作りたいと思っています。
あるパスで作成されたファイルでそれができると思いましたが、それでは十分な速度ではない可能性があります。
これを行う方法を知っている体はありますか?
このファイルの変更の通知とファイルの組み合わせを試すことができます。プロセス間の通知は、次の 2 つの方法で送信できます。
CFNotificationCenterGetDarwinNotifyCenter
CFNotificationCenterGetDistributedCenter
- プライベート API分散通知センターは、いくつかのデータを添付して通知を送信できるため、より優れています。Darwin 通知センターは、渡されたすべてのユーザー情報を無視します。したがって、フラグを変更してファイルに保存すると、このフラグの新しい値で通知を送信できます。ファイルを開いてフラグの値を自分で取得する必要さえありません。他のすべてのアプリは、この通知をリッスンするだけで済みます。
CFNotificationCenterGetDistributedCenter
試作品はこちら
CFNotificationCenterRef CFNotificationCenterGetDistributedCenter();
アップデート:
この機能は iOS 5.0 以降で利用できます。古いバージョンをサポートする必要がある場合は、次の 2 つの解決策があります。
古いバージョンを本当にサポートする必要がある場合は、CFMessagePort を使用することをお勧めします。シンプルで柔軟なソリューションであり、十分に文書化されています。問題がある場合は、いつでも実用的な例を見つけることができます。