0

プラグインシステム(NSBundleを使用)を使用してアプリを作成しました。すべて問題ありませんが、アプリの実行中にプラグインファイルが削除された場合を処理したいと思います。

そのための最善の方法は、ロードされたプラグインファイルの削除を無効にすることだと思います(Windowsのdllのように、アプリケーションによってロードされたときに削除することはできません)

ただし、OSXでは、アプリで使用されている場合でもプラグインファイルを削除することができます。

アプリがプラグインファイルを使用するときにプラグインファイルの削除を無効にすることは可能ですか?

または、少なくともファイルが削除されたときに通知を受け取ることができるので、プラグインファイルが削除されたときにアプリを更新できますか?

ありがとうございました

4

1 に答える 1

1

ロードされたプラグインの削除を無効にできるとは思いませんが、ファイルシステムへの変更を監視する可能性があります。

  1. 「ファイルシステムイベントAPI」

    File System Events APIを使用すると、指定したディレクトリの内容が変更された場合にアプリに通知できます。次に、ディレクトリを自分でスキャンする必要があります。たとえば、どのプラグインがまだ存在するか、または削除されているかを確認します。

  2. カーネルキュー

    kqueue()これは、kevent()システムコールを使用する、より低レベルのアプローチです。たとえば、ファイル記述子を登録するとunlink()、参照されたファイルで呼び出された場合に通知されます。

両方のメカニズムは、ファイルシステムイベントプログラミングガイドで説明されています。File SystemEventsAPIを使用してファイルの変更を監視するサンプルプロジェクトもあります。

于 2012-10-02T17:02:47.970 に答える