2016-05-08 18 views
-1

私は現在ARCを学んでいます。オートリリースプールのオブジェクトは排水後にのみ削除され、残っていない場合は削除されます。参照カウント環境で自動解放プール。排水と保持

答えて

0

リンゴドキュメントから抽出link

( ガベージコレクションを使用するものとは対照的に)、NSAutoreleasePoolオブジェクトは自動解放メッセージを受信し、排水時に送信た オブジェクトが含まれてい これらのオブジェクトのそれぞれにメッセージを解放します。したがって、オブジェクトにリリースではなく を送信すると、そのオブジェクトの有効期間は少なくともプール自体が排出されるまで に拡張されます(オブジェクト が引き続き保持される場合は長くなる可能性があります)。オブジェクトは同じプールに複数回入れられます。この場合、プールに入れられた時間はそれぞれ のリリースメッセージを受け取ります。

注:ARCでは、retain、release、retainCount、またはautoreleaseを明示的に呼び出すことはできません。

0

はい、しかしARCでは、一般にautoreleasePoolsを扱っていません。大規模なループでは、オブジェクトを解放できるようにするには@autoreleasepoolを使用することがありますが、ほとんどの場合、必要なオブジェクトへの強い参照と、参照が必要なオブジェクトへの弱い参照を保持しますが、保持ループは避けてください。 ARCは魔法のようにほとんどすべてを処理します。

0

自動解放プール内のオブジェクトは、ドレイン後にのみ削除され、保持されない場合は削除されますか?

はい。 drainは、自動解放プール内のオブジェクトの保持カウントをデクリメントします。その結果、オブジェクトの保持カウントがゼロになると、それは通常どおりに破棄されます(もはや存在しなくなるので、明らかにプール内には存在しません)。

関連する問題