0

私はAppleがリリースしたLazyTableImagesコードを読んでいて、それらはこの効果のために何かをします(NSOperationサブクラスで):

- (void)dealloc {
    [myProperty release];
    [myProperty2 release];
}

- (void)main {
    //
    // Parse operation undertaken here
    //
    self.myProperty = nil;
    self.myProperty2 = nil;
}

私の考えでは、プロパティをnilに設定する前に呼び出された場合 に、これを実行します。dealloc

私の考えはここで正しいですか?効果的にリリースするので、リリースは不要ですか?self.myProperty = nilmyProperty

このコードで私が気づいたことの1つは、releaseオブジェクトがすべて保持されているわけではなくdealloc、一部だけが保持されていることです。これが私の混乱の原因です。

乾杯

4

1 に答える 1

4

あなたはすることができないか、後self.myProperty = nilでさえ。理由を知っている? もう存在しないからです。[myProperty release]deallocself

あなたの質問に関しては、のリリースは不要のようですが、メソッドdealloc内のインスタンス変数をクリーンアップすることは依然として良い習慣です。dealloc

編集

Peterがコメントで指摘しているように、-mainメソッドが実行されない場合は、releaseステートメントを含める-dealloc必要があります。それらがなければ、メモリリークが発生します。

于 2011-01-08T22:28:03.320 に答える