0

スタック オーバーフローの人々 助けが必要です。初めてのアプリを App Store に公開しようとしていますが、アプリのメモリ リークを修正するためのサポートが必要です。複数のビュー、iAd、サウンド付きのボタンを備えたシンプルなビュー ベースのアプリケーションです (アプリはシンプルなサウンド ボードです)。正確に何を配置すべきかの例と場所の写真が必要です。

アナライザー メッセージ:Potential Leak of an Object allocated on Line 135 and stored into 'soundFileURLRef'

-(IBAction)sound25 {
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"BELLMACH", CFSTR ("wav"), NULL);

    UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID);
} 
4

2 に答える 2

3

ドキュメントには、 CFBundleCopyResourceURL「Create Rule」に従うと記載されています。これは、基本的に、名前に「create」または「copy」を含む関数は保持されたオブジェクトを返すことを示しています。このオブジェクトの所有権は、使い終わるまで保持されます。したがってCFRelease、オブジェクトを使用しなくなったときにオブジェクトを呼び出すのは、あなたの責任です。おそらく、システムサウンドを作成して再生するために使用した後なので、追加するだけです

CFRelease(soundFileURLRef);

そのメソッドの最後で、他の場所に固執したり必要としないと仮定して、問題ありませsoundFileURLRefん。

于 2012-07-13T22:13:39.747 に答える
0

「CFBundleCopyResourceURL」という名前には「コピー」という単語が含まれているため、「作成ルール」に従い、オブジェクトを「所有」し、使い終わったらオブジェクトを解放する責任があります。

于 2012-07-13T22:13:55.827 に答える