2009-07-31 5 views

答えて

11

theObjectプロパティが保持プロパティの場合、メモリがリークしないため、最初の方法は正しいです。あなたはallocでオブジェクトを作成するたびに、あなたがどうかreleaseまたはautoreleaseによって、何とかそれを解放を担当している

self.theObject = [[[SomeObject alloc] init] autorelease]; 

:それは、この第二のバージョンを、書くためにも正しい方法よりも効率的です。

+4

技術的にはオブジェクトを作成するallocなので、initではなくリリースが必要です。 – smorgan

+0

ありがとう、良いキャッチ。 –

+0

うん、私もそれに気づいた。しかし、ありがとう。私は本当に他の言語でガベージコレクションを評価し始めています。 – mk12

1

第二のバージョンはSomeObjectのインスタンスをリーク、self.theObjectが正しく書き込まれている場合、セッターを呼び出すので、オブジェクトを保持します。

あなただけ

theObject = [[SomeObject alloc] init]; 

を行うことができ、いくつかの人々は確かに行います。他のものは、アクセサーに副作用がある場合には、一貫性のためにバグを避けるためにアクセサーを常に使用することを好みます(例として、KVO通知をバイパスしますが、これはinitメソッドの一部ではない場合があります)。

関連する問題