2009-07-06 4 views
3

いくつかのインタフェースビルダーオブジェクトを別のオブジェクトにインスタンス変数として結び付けた場合、それらを親オブジェクトのdeallocメソッドで解放する必要がありますか?重要な点は、キー値コーディング(@property)を持つIBOutletを(非原子的、保持)モードで宣言することです。私の理論では、IBOutletオブジェクトは、自分のView ControllerのinitWithNibName:...メソッドが呼び出されたときに作成され、保持モードで@propertyメソッドを実装したため、親オブジェクトによって保持されます。これは正しいです?割り当てモードでメソッドを実装するとどうなりますか?Objective-c IBOutletオブジェクトは解放されますか?

答えて

2

絶対に正しいです。 dealloc、IBOutletの(保持)プロパティを解放する必要があります。このようにして、IBOutletのメモリ管理が明確に定義されます。

すでに保持されているオブジェクト(他の方法で保持されているビューのサブビューなど)からIBOutletをワイヤリングする場合は、プロパティにも使用(割り当て)することもできます(もちろんdeallocで解放しないでください)。

関連する問題