0

ARCが物事を大幅に簡素化するという事実にもかかわらず、私はまだObjective-cのメモリ管理の詳細のいくつかに慣れています。コード行は次のとおりです。

[song addEntriesObject:self.entry];

ここで、songは、管理対象オブジェクトコンテキストでフェッチ要求を実行することによってアクセスする管理対象オブジェクトであり、self.entry初期化時にこのクラスに渡されるインスタンス変数を参照し、管理対象オブジェクトでもあります(つまり、コアデータエンティティです-希望しますその用語を適切に使用しています)。

私の質問は、これがメモリ管理に問題を引き起こすかどうか、つまりself.entry、管理対象オブジェクトに割り当てると、コアデータまたはそれらの線に沿った何かによって保持されているためにそのインスタンス変数が解放されないかどうかです。これは問題を引き起こしますか、それともコアデータは同じ方法でオブジェクトへのポインターを維持しませんか?それとも、私はここでの思考プロセスで完全に間違った方向に進んでいますか?

このテーマについての考えは大歓迎です。

4

1 に答える 1

2

カウファブー、

Core DataオブジェクトはNSObjectsであるため、同じように動作します。つまり、メモリ管理に関しては何も変わりません。あなたの例でself.entryは、はインスタンスとによって保持されますsong

ARCとは関係なく、CoreDataアイテムは大きなオブジェクトグラフを保持できます。これらは剪定する必要があるかもしれません。この-refreshObject:mergeChanges:方法は、これを行うために使用されます。苦痛を軽減するため-save:に、グラフをトリミングする前に必ず使用する必要があります。

アンドリュー

于 2012-10-30T12:35:18.320 に答える