1

アプリケーションが起動すると、他のエンティティとの多対多の関係を含む一連のコンテキストオブジェクトが初期化されます。例えば、マルチスレッドコアデータ: 'メイン'コンテキストスレッド

  • 歴史
  • 私のトラックの歴史と私のトラックがO対多のトラックエンティティを含んでいるでしょうここ

。これらは(私の現在の実装では)メインスレッド上のコンテキストによって管理されています。

アプリが実行されている間、トラックエンティティはバックグラウンドで作成され、履歴とマイトラック(異なる管理対象オブジェクトのコンテキストにあります)に移動されます。すべてのバックグラウンドスレッドは、独自の管理オブジェクトコンテキストを持ちます。しかし、My TracksのHistoryを保存しなければならないときは、メインのコンテキスト/メインスレッド上にある必要があります。これは、メインスレッドが書き込みのためにブロックされている間に、重大で許容できないUI遅延を引き起こしています。

回避策の提案はありますか?

答えて

0

これにはいくつかの解決策があります。過去2年間、iTunesのアップルのWWDCビデオを見ることを強くお勧めします。私はなぜ「あなたのマイトラックをメインスレッドに保存する必要があるのか​​不思議です。 「それを保存しなければ、私の主な文脈はそれについて知りません」というのは本当ですか?その場合、saveChange通知を使用する方法があります。これにより、バックグラウンドスレッドは、メインコンテキストに特定のオブジェクトなどを知らせることができます。