0

[self.object release] のように dealloc メソッドでオブジェクトを解放している Xcode では、この行は静的コード アナライザーを使用してメモリ リークとして表示されますが、インストゥルメントの実行中にはリークとして表示されません。

ここで私の質問は、異なる BWN[self.object release]とは何かということです。[object release]

これを明確にしてください、

前もって感謝します。

4

2 に答える 2

3

self.object実際にはgetterメソッド([self object])を呼び出します。これはインスタンス変数を返しますobject(または合成方法によって異なります)が、インスタンス変数は実際には保持されたオブジェクトを保持するため、を実行する必要があります[object release]@synthesize object = _objectプロパティとインスタンス変数を混​​同しないように、プロパティを合成することをお勧めします。プロパティはになりself.objectますが、インスタンス変数はになり_object、を呼び出します。[_object release];

于 2012-05-08T11:19:05.757 に答える
3

する代わりに -

[self.object release]

あなたがする必要がある -

self.object = nil; or [object release];

[self.object release] は、プロパティの getter によって返されたオブジェクトに release 呼び出しを送信します。そして結果は、プロパティが割り当て/コピー/保持として定義されているかどうかによって異なります。

于 2012-05-08T11:21:49.513 に答える