ほとんどのiOS開発者は、Info.plistに1行だけ追加するだけで、アプリケーションでiTunesファイル共有を簡単に有効にする方法を知っていると思います。
UIFileSharingEnabled = YES
しかし、これは戦いの半分でもありません。 重要な点は、良い方法で、アプリケーションはDocumentsディレクトリで発生したファイルへのすべての変更を追跡し、それに応じてデータを更新する必要があることです。 この記事では、コードでこれをリリースする方法を説明します。

そもそも、Concurrency Programming Guideのかなりの理論です。 GCDには、
ディスパッチソースなどの概念があります。これは、特定の低レベルイベントの処理を調整する基本的なデータ型です。 問題を解決するために、ファイルやソケットを使用したさまざまな操作について通知する
記述子ソースとして、そのようなバリエーションに最も関心があります。
dispatch_source_create
メソッドを使用してディスパッチマネージャを作成する必要があります。このメソッドのソースはファイル記述子(ディレクトリファイル記述子)であり、イベント自体(ファイルの記録)によって必要なアプリケーションデータ更新ブロックを実行します。
ここで、イベントはディスクに書き込まれたファイルの最初のバイトによってトリガーされ、ファイルが大きくなっていることに注意する必要があります。 したがって、データ更新ブロックでは、1秒のタイムアウトで同期の終了の再帰的なチェックを開始します。
だから、体に近い。 必要なディレクトリの監視を開始および停止する2つの主要なメソッド
startMonitor
と
stopMonitor
を作成します。また、ハンドラーブロックを介して起動されるこのディレクトリの変更をチェックするための補助メソッドをいくつか作成します。
- (void)startMonitor {
さて、テキストに目を向け、理解するのが
面倒な人のために、同様のアプローチが
Cocoanetics / DTFoundationクラス
DTFolderMonitor
で既に実装されています。
また、iTunesファイル共有を使用し
てアプリケーションを操作した経験から、アプリケーションがアクティブになったらすぐに、監視に加えて
scanDocumentsDirectory
などのメソッドを実行する必要があることを思い出したいと思います。 その目的は、チェックするだけでなく、ディレクトリ内の実際の存在を使用してアプリケーション内のファイルのデータを更新することでもあります。
- (void)applicationWillEnterForeground:(UIApplication *)application { [self scanDocumentsDirectory]; }