您的代碼不工作,因爲你處置你的資源,你與他們之前完成。
AudioServicesDisposeSystemSoundID(soundID);
當您播放聲音時不應調用。你需要重新組織你的代碼。
如果高級NS
類可以完成這項工作,您還應該避免CF
類。在這種情況下,他們可以。具體方法如下:響應
代碼評論: SoundExampleViewController.h:
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>
@interface SoundExampleViewController : UIViewController{
SystemSoundID bear3SoundID;
}
-(IBAction)playSoundButtonPushed:(id)sender;
@end
SoundExampleViewController.m:
#import "SoundExampleViewController.h"
@implementation SoundExampleViewController
-(IBAction)playSoundButtonPushed:(id)sender{
AudioServicesPlaySystemSound(bear3SoundID);
}
- (void)viewDidLoad{
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"Bear3" ofType:@"wav"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path],&bear3SoundID);
}
- (void)viewDidUnload{
[super viewDidUnload];
AudioServicesDisposeSystemSoundID(bear3SoundID);
}
@end
即使你堅持使用CF
類的viewDidLoad
方法,你應該遵循這個總體佈局。
您是否收到錯誤?發生什麼事? – Amy