質問

私はあなたがiOSのautoreleaseと注意する必要があります理解しています。私はそれが呼び出し側で必要とされるallocsオブジェクトを返すメソッドを持っているので、このような状況では - 私はそれを理解して - 私はそれが戻る前に呼び出し先のオブジェクトにautoreleaseを送信する必要があります。

これは結構ですが、(私のボタンのクリックが処理された後、すなわち)電話に制御が戻るたら、自動解放プールが解放されているようです。私は、これは可能になっているかである疑いがあるが、私はこのような状況のためのベストプラクティスは何か疑問に思ってます。

私は、オブジェクトが解放されないように、発信者からretainメッセージを送信して、明示的deallocでそれを解放するに頼っています。

これが最善のアプローチですか?

役に立ちましたか?

解決

自動解放プールは通常、実行ループの各反復後に放出されます。大雑把に、すべてのココアとココアタッチアプリケーションはこのように構成されます:

Get the next message out of the queue
Create an autorelease pool
Dispatch the message (this is where your application does its work)
Drain the autorelease pool

あなたが記述することは予想される動作です。あなたはもはやそれよりも周りのオブジェクトを保持したい場合は、明示的にそれを保持する必要があります。

他のヒント

autoreleaseを使用すると、「私はもうあなたを望んでいないが、私はあなたが欲しいかもしれませんので、まだ消えていない他の誰かにあなたを渡すつもりですオブジェクト。」、というのが方法ですだから、オブジェクトは、十分な長さあなたがメソッドからそれを返したり、別のオブジェクトにそれを与えるためには周りに固執します。いくつかのコードは、周りのオブジェクトを保持したい場合は、それをretainingことにより、所有権を主張する必要があります。

メモリ管理ガイドラインが必要にすべてのためを参照してください。正しくautoreleaseを使用することを知っています。

scroll top