1

珍しいメッセージが表示されます。何が起こっているのですか?

定義:

@property(nonatomic, retain) SoundPlayer* soundPlayer;

コード:

SoundPlayer *soundPlayerTemp = [[SoundPlayer alloc] init];
self.soundPlayer = soundPlayerTemp;
[soundPlayerTemp release];

メッセージ:

Potential leak of an object allocated on line
4

2 に答える 2

0

静的アナライザーは誤検知でいっぱいです。コードに問題はありません。次のようにすれば、より簡潔になり、メッセージを取り除くことができます。

self.soundPlayer = [[[SoundPlayer alloc] init] autorelease];

または、優れた選択肢である ARC に切り替えることもできます。

于 2012-04-18T13:47:02.297 に答える
0

この問題の原因として最も可能性が高いのは、dealloc メソッドでプロパティを解放していないことです。次のようなものが必要です。

-(void) dealloc
{
    self.soundPlayer = nil;
    [super dealloc];
}

または、プロパティをサポートするインスタンス変数を明示的に宣言した場合、推奨されるコードは次のとおりです。

-(void) dealloc
{
    [soundPlayer release];
    [super dealloc];
}
于 2012-04-18T14:39:41.280 に答える