2017-06-13 17 views
1

問題: xcode楽器でiOSアプリケーションを分析すると、小さくても重要な(スニペットはプロジェクトを通して間接的に実行されます)メモリリークがあるようです。NSAsynchronousFetchRequest可能メモリリーク

DESRCIPTION:我々は実体参照のいずれかの使用を作ると、典型的なリンゴの提案コアデータオブジェクトのコンテキストスタックここ

に従わない相互の間接の維持によるNSAsynchronousFetchRequestに明らかな漏れを示す機器のスクリーンショットですNSFetchResult

ここ

enter image description here

への参照は、すべての非neccessaryコード、偶数[弱い自己] removeingリーク(トリガコードスニペット静止しないちゃんでありますGEそれ)インスツルメンツ

let anEntityFetch = NSFetchRequest<NSFetchRequestResult>(entityName: AnEntity.entityName) 

let asyncFetchRequest = NSAsynchronousFetchRequest(fetchRequest: rangeQuantityFetch) { (asynchronousFetchResult) -> Void in 
    // 
} 

do { 
    // commenting out the execute there is no leak anymore 
    _ = try managedObjectContext.execute(asyncFetchRequest) 

} catch { 
} 

によると、同じことは、コンパイルの最適化フラグを有効に起こります。

質問:インストゥルメントまたはxcodeバグのみである可能性はありますか?または、それは既知の中核となるデータの問題ですか?または、問題の原因に私を対処するためのヒントがあれば、本当に感謝します。

答えて

0

issueとコアデータオブジェクトコンテキストスタックがあるようです。この構成では、実際の永続コーディネータを持つ書込みコンテキストを親として持つ主なコンテキストがあります。 memory-leak-on-nspredicate-that-used-in-fetch-request-to-fetch-nsmanagedobjectによれば、問題は親を持つ主なコンテキストにあります。答えで指摘したように

  • または( 動作するようですが、きれいな解決策ではありませんが)nilに設定するNSAsynchronousFetchRequestを拡張この

    • 変更のいずれかのコアデータ・スタックを解きますrequestプロパティ が呼び出されます(このようにして、参照サイクルは になり、リソースはARCによって割り当て解除されます)。
  • 関連する問題