3

NSInMemoryStoreType 永続ストアを使用する場合の CoreData では、アプリが開いている限り、データはメモリにキャッシュされたままになりますか? または、このデータによって使用されているリソースが iOS によって回収される可能性はありますか?

マルチタスク時に iPhone アプリをバックグラウンドにできること、および iOS がバックグラウンドで実行されているアプリのリソースを再利用することを考えると、.

これは、場合によってはメモリ キャッシュ内の永続ストアが失われる可能性があることを意味しますか? たとえば、アプリがバックグラウンド状態で長時間放置されていて、その後、ユーザーがさまざまなアプリにアクセスして使用したとします。

誰かがこの主題に光を当てることができれば、それは素晴らしいことです.

4

2 に答える 2

1

Core Data 内のリソースの一部がNSPurgeableDataオブジェクトである可能性は確かにあるため、メモリ プレッシャがある場合、中断中にそれらが削除される可能性があります。これは内部実装の詳細であり、常に透過的である必要があります。

Core Data 以外の具体的な例として、UIImageメモリが不足している場合にキャッシュされたデータの一部を削除することが文書化されています (ドキュメントの画像とメモリ管理を参照UIImage)。Core Data のものが同じことを行う可能性は確かにあります。しかし、繰り返しになりますが、パフォーマンスの考慮事項 (つまり、データを再計算する必要がある場合) を除いて、問題になることはありません。

もちろん、アプリケーションが強制終了されると、メモリ内のデータ ストア全体が失われる可能性があります。これはいつでも発生する可能性があります。しかし、OS は勝手にメモリを削除するだけではありません。

于 2013-04-30T19:32:55.373 に答える
0

私は 100% ではありませんが、ノーと言わざるを得ません。これは部分的に回収されるわけではありません。iOS は使用するメモリを割り当てますが、メモリの警告に達しない限り割り当てを解除しません。その場合、アプリをすべて閉じるか、ユーザーが処理します。プロセスは 10 分後に停止し、そのサンドボックス化されたアプリによって保持されているすべてのリソースは、必要でない限りメモリに残ります。その場合、アプリ全体が閉じます。したがって、別のアプリが利用可能なメモリよりも多くのメモリを要求した場合、アプリとそれに割り当てられたメモリは閉じますが、ビットとピースは閉じません (データソース)。

于 2013-04-30T15:59:33.613 に答える