1

fooNSManagedObjectサブクラス内にオブジェクトivarbarがあり、オブジェクトが存在する限り、常にそこに存在する必要があります。

が正しく作成されることを確認するために、作成時に作成するようにfooawakeFromInsertをサブクラス化しました。ストアからフェッチされたときに確実に存在するように、awakeFromFetchでも同じことを行いました。foobarfoobar

これに対抗するために、foowillTurnIntoFault内とprepareForDeletionでリリースします。

ただし、deleteを実行するbarと、prepareForDeletionとwillTurnIntoFaultの両方が呼び出され、foo2回解放されることがわかりました。

おそらくprepareForDeletionでリリースできないことはわかっていますが、ここでのベストプラクティスを知りたいので、何かが障害になったことなどを理解しています。通常のオブジェクトの場合は、作成するだけです。fooinitで、deallocで破棄します。

ありがとう!

4

1 に答える 1

2

ivarをリリースするだけでなく、リリースしてに設定しnilます。解放nilしても効果がないので、2回でも大丈夫です。

さらに良いことに、セマンティクスを使用fooしてプロパティを作成し、常に。を介して設定します。retain-setFoo:

于 2010-11-03T23:12:40.453 に答える