私は自分のアプリを叩き始めて、深く掘り下げて走っていますが、すごく走っています。@synthesizeを保持している@プロパティを持つすべてのものをリリースしますか?
すべての@property(nonatomic、retain)に対して、deallocメソッドで[variable release]を持つ必要があるため@synthesizeを作成します - これは正しいですか?
IBOutletの場合でも、
私は自分のアプリを叩き始めて、深く掘り下げて走っていますが、すごく走っています。@synthesizeを保持している@プロパティを持つすべてのものをリリースしますか?
すべての@property(nonatomic、retain)に対して、deallocメソッドで[variable release]を持つ必要があるため@synthesizeを作成します - これは正しいですか?
IBOutletの場合でも、
はい。オブジェクトの所有権をretain
プロパティにすることでオブジェクトの所有権を宣言しました。つまり、オブジェクトを解放して所有権を放棄する必要があります。
も参照してください:http://stackoverflow.com/questions/2189919/how-is-release-handled-for-synthesized -retain-properties –
ありがとう、私の最初のプログラムと私はちょうどオフトラック - リリースするプロパティのトンを持っている:) – Slee
あなたはアクセサリーをチェックアウトしたいと思うかもしれない...それはあなたの人生を簡単になります。 http://www.kevincallahan.org/software/accessorizer.html関連するコメントとして – joshpaul
はい。あなたがプロパティを保持する場合、それをリリースする責任があります。
宣言されたプロパティは、基本的にアクセサメソッド宣言の代わりになります。プロパティを合成すると、コンパイラーは不在のアクセサメソッドしか作成しません。 deallocメソッドとの直接の対話はありません。プロパティは自動的に解放されません。
通常は、あなたのdeallocメソッドでこれを行います。また
- (void)dealloc {
[property release];
[super dealloc];
}
あなたが保持IBOutlet
を持っている場合、あなたはそれを解放し、-viewDidUnload
でnil
に設定する必要があります。これにより、ビューが削除されたときに、特にメモリ不足の警告に応答して、オブジェクトがコンセントを解放できるようになります。その方法でivarをnil
に設定すると、オブジェクトが後で割り当て解除された場合にivarを二重に解放するリスクを回避できます。
+1良い明瞭さ。 – gabaum10
@Joe(または 'copy') –
ありがとう、私はそれが最終的に私の厚い頭蓋骨を通してそれを作ったと思う。 – Slee