私はCの経験豊富なプログラマーですが、客観的なcではありません。私は客観的なcで彼にこのコードを渡すことで友人を助けようとしています。ところで、これはiPhoneアプリケーション用です。私は必要なすべての基盤を持っていますが、あなたが見ることができるように、 - (IBAction)メソッドを使用して私のサウンドをsoundAとして宣言しました...さらに、サウンドは100 KB以下の単純な.wavファイルです。CコードからObjCに変換
- (IBAction)soundA:(id)sender {
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle,
(CFStringRef) @"soundA", CFSTR ("wav"), NULL);
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
AudioServicesPlaySystemSound(soundID);
}
ご協力いただきありがとうございます。本当にありがとう。
- ジョングク
質問は何ですか? –
ObjCはCのスーパーセットなので、CコードもObjCコード – ouah
'CFBundleCopyResourceURL'は名前にcopyを持っていますので、あなたが所有するメモリを返します。あなたのコードでは 'soundFileURLRef'が結果としてリークします。 'audioServicesCreateSystemSoundID'は' create 'メソッドであるため、 'soundID'に関連するメモリについてはDittoです。 – Tommy