0

NSManagedObjects をレンダリングするために CATiledLayer を使用しています。しかしご存知のように、CATiledLayer はバックグラウンド スレッドでオブジェクトをレンダリングします。これにより、iOS5でアプリがクラッシュします

スレッドごとに別々の NSManagedContext を使用する必要があることはわかっていますが、この方法ではパフォーマンスが低下します。(データを他のスレッドに転送するために NSManagedContext をより頻繁に保存する必要があるため)。

私の問題を回避するより良い方法を知っていますか? 助けてください!!!

下手な英語でごめんなさい!

4

1 に答える 1

1

NSManagedObjectContext はスレッドセーフではなく、NSManagedObjects もそうではありません。バックグラウンド スレッドで MOC を作成し、任意のID (スレッド セーフ) を渡し、それらをバックグラウンド スレッド コンテキストにロードする必要があります。

アップデート:

1 つの代替方法は、プレーンな古い obj-c オブジェクト、または必要なデータを含む通常の NSDictionay を作成し、それらをバックグラウンド スレッドに渡すことです。したがって、MO にデータが入力されたら、POOCO を作成し、必要なデータをコピーして、処理のためにバックグラウンド スレッドに渡します。これにより、ディスク アクセスが回避されます。

于 2011-10-25T14:29:10.037 に答える