2011-07-15 12 views
13

私はNSFetchedResultsControllerを使ってUITableViewを処理していますが、すべて正常に動作し、特に結果デリゲートと一緒に非常に強力です。 テーブルをドリルダウンするには、同じコントローラクラスを再利用しています。これは、セル行をクリックしてパラメータを使用してインスタンス化します。コントローラはUINavigationControllerにプッシュされ、NSFetchedResultsControllerを使用して別のテーブルビューが構築されます。NSFetchedResultsControllerキャッシュを正しく使用する

この時点で、すべてのコントローラーには独自のキャッシュがあり、キャッシュ名は一意の識別子[NSString stringWithFormat "cacheName _%@"、uniqueStringForCell]で派生しています。

今質問があります。

1)多くのキャッシュを持つことは問題になりますか?

2)キャッシュを使用する時期はいつですか?

3)deleteCacheWithNameの場合、そのようなメソッドを置くのに最適な場所はどこですか?私はviewWillDisappearで試してみましたが、これで私は問題が発生し、ビューが再び表示され、キャッシュがもう存在しないとします。たとえば、UINavigationControllerを使用する場合などです。おそらくdeallocメソッドが最適な場所でしょうか?

4)キャッシュとメモリ管理の関係は何ですか?つまり、(void)didReceiveMemoryWarningが送信されたときにキャッシュを削除する必要がありますか?はいの場合は、それをもう一度再構築するのはどうですか?どのような方法が良いでしょうか、フェッチを発行し直していますか?

5)フェッチコントローラのデリゲートがUITableViewController(fetchController.delegate = self)に設定されていますが、問題はありますか?ある意味で、複数のコントローラに変更があった場合、警告が出されますか? deleteCacheWithNameはデリゲートも削除しますか?

おかげ

答えて

11

は(一部)のご質問にお答えするには:複数のキャッシュを持つ

1)は問題ではありません。実際には、Appleのクラス参照から:

  • あなたは(ように別の種類の記述子と)異なる 構成を持つ複数のフェッチ結果コントローラを持っている場合は、 それぞれ異なるキャッシュ名を与える必要があります。

私は、この問題を解決するために時間を無駄にしたという例外を得るためにこれをしなかった以前のアプリに問題がありました。

2)私たちはキャッシュを使用して、NSFetchedResultsControllerが行う必要があるすべての繰り返し作業を保存することになっています。セクションまたは注文情報が変更されるたびに、キャッシュが更新されます。同様に、キャッシュがデータベース内の現在の情報(新しい行の追加、削除など)と一致しない場合、コントローラはキャッシュを解放してクリアします。

3)私は個人的に、viewDidUnloadメソッドにdeleteCacheWithNameを入れました。これが最高の場所かどうかは分かりませんが。

約4がわかりません。キャッシュの再構築に関して、現在のキャッシュとアプリが同期していないと自動的に発生します。私はメモリ管理とキャッシュのための何かを私のアプリケーションのどれかでやっていません。

5)これは問題ではありません。ここでも、Appleのドキュメントから:あなたはフェッチ結果コントローラのデリゲートを設定した場合

  • 、 コントローラは、その管理 オブジェクトコンテキストからの変更通知を受け取るために登録します。結果セット またはセクション情報に影響を与えるコンテキストの変更が処理され、結果が に応じて更新されます。コントローラは結果オブジェクト が場所を変更したとき、またはセクションが変更されたときにデリゲートに通知します( NSFetchedResultsControllerDelegateを参照)。通常、これらのメソッド を使用して、テーブルビューの表示を更新します。 http://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html

    HTH

FYI、ここではこのクラスのリンゴのdevのドキュメントへのリンクです

関連する問題