1

たとえば、入力ストリームで NSXMLParser を使用します。パーサーが xml ノード アプリケーションをロードすると、このノードに従って NSManagedObject が作成されます。作成された管理対象オブジェクトのカウンター (単純な NSInteger プロパティ) が 50 を超える場合、アプリケーションは管理対象オブジェクトのコンテキストを保存し、収集されたすべてのオブジェクトを配列に取り、 refreshObject を実行します: obj mergeChanges:NO (障害に変わるオブジェクトがあります) db app に完全にロードした後フォールトに対して同じことを行い、プロパティに保存されているコンテキストをリセットして無効にし、管理対象オブジェクトへのすべての参照をフラッシュします。その結果、50000 個のオブジェクトが保存されますが、メモリは完全ではなく部分的に解放されます (最大 20 メガバイトが残ります)。@autorelease の多くがバックグラウンド スレッドで実行している coredata へのインポート。リーク ツールにリークが表示されない。その操作の後にメモリが解放されない理由がわかりません

4

2 に答える 2

0

理由はたくさんありますが、その多くはコードに関係している可能性があります。他にもいくつかの可能性があります。ゾンビを有効にすると、メモリが解放されなくなります。また、CoreData は必要に応じてオブジェクトも保持します。

于 2013-11-01T14:41:19.617 に答える