0

私はIOSプログラミングに比較的慣れていません。私はすべてのプログラミングが ARC なしで行われるクラスを終了しましたが、明確にすることを望んでいたメモリ管理の問題がありました。

私の状況は次のとおりです。「親」View Controllerがプッシュする別の「子」View Controllerを保持するアプリがあります。したがって、この子ビューがプッシュされてからポップされた場合、親ビューがそれを保持しているため、割り当ては解除されません。それでも、この子ビューは、ポップされたときにすべてのプロパティで release を呼び出していると思います。その中に(非アトミック、保持)プロパティがあり、子ビューコントローラー自体がまだ存在していても、それらのフィールドは割り当てが解除され、子ビューがポップされるとnullになるため、これらのプロパティでリリースを呼び出す必要があります。

以前のView Controllerで子View Controllerを保持している限り、ポップされてもプロパティを解放しないと思っていましたが、そうではないと思います。私はこれについて正しいですか?見つけられませんでしたが、ビューがポップされたときに呼び出されるすべての内容を記載した参照ページはありますか?

4

1 に答える 1

1

そんなはずはない。ビューコントローラーをポップすると、子の保持カウントが1つ減ります。ただし、保持がゼロに達したときに dealloc メソッドが呼び出されるまで、子コントローラーはその要素を解放しません。親に正しく保持している場合は、解放しないでください。

于 2012-12-13T01:29:44.707 に答える