1

このコードは問題ないはずですが、StaticAnalyzerはそれを好みません。理由がわからず、誰かに理解してもらえるといいなと思っていました。コードは正常に機能し、アナライザーの結果は私を悩ませます。

Coin *tempCoin = [[Coin alloc] initalize];
self.myCoin = tempCoin;
[tempCoin release];

CoinはジェネリックNSObjectであり、初期化メソッドがあります。myCoinは現在のビューのプロパティであり、タイプはCoinです。私はそれが私が漏れていると私に言っていると思いますtempCoin

私の見解の.hでは、myCoinをnonatomic、retainを持つプロパティとして設定しました。

この通常のリリースと同様にコードを自動リリースしようとしましたが、Static Analyzerは次のように言い続けます:
1。メソッドは+1の保持カウント(所有参照)を持つObjective-Cオブジェクトを返します
2.行97に割り当てられたオブジェクトはもうありませんこの時点以降に参照され、保持カウントが+1(オブジェクトがリークされた)

行97は、私が最初に表示する行です。

4

1 に答える 1

7

静的アナライザーはを探しているので、initではありませんinitialize[Coin alloc]後者を見て、によって返されたオブジェクトがとは異なるオブジェクトを返すと想定しinitialize、最初のオブジェクトをリークします。

メソッドの名前をに変更するinitと、静的アナライザーはリークを報告しなくなります。

于 2011-01-11T21:53:13.260 に答える