-2

そこで、ボタンを押すと音が鳴るアプリを作っているのですが、ボタンを押すとアプリがクラッシュしてしまいました。コードはこちら

.h ファイル内

#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>

@interface ViewController : UIViewController {

}

-(IBAction)buttonPressedWithSound:(id)sender;

@end

そこには何も問題はありませんが、.m ファイルには

-(IBAction)buttonPressedWithSound:(id)sender {

int randomSoundNumber = arc4random() % 4; //random number from 0 to 3

NSLog(@"random NR = %i", randomSoundNumber);

NSString *effectTitle;

switch (randomSoundNumber) {
    case 0:
        effectTitle = @"Come at me BRO!";
        break;
    case 1:
        effectTitle = @"sound2";
        break;
    case 2:
        effectTitle = @"sound3";
        break;
    case 3:
        effectTitle = @"sound4";
        break;

    default:
        break;
}

SystemSoundID soundID;

NSString *soundPath = [[NSBundle mainBundle] pathForResource:effectTitle ofType:@"caf"];
NSURL *soundUrl = [NSURL fileURLWithPath:soundPath];

AudioServicesCreateSystemSoundID ((CFURLRef)CFBridgingRetain(soundUrl), &soundID);
AudioServicesPlaySystemSound(soundID);
}

@end

ここのこの行

 NSURL *soundUrl = [NSURL fileURLWithPath:soundPath];

何か問題があると言っていましたが、これは

 2012-08-10 10:12:52.419 Sound +[1177:907] random NR = 1(lldb)

 NSURL *soundUrl = [NSURL fileURLWithPath:soundPath]; 

緑のハイライトがあり、その横に「スレッド 1: ブレークポイント 1.1」と表示されていました。

どうすれば修正できますか、クラッシュすることなくサウンドを再生できますか

4

2 に答える 2

1

NSSoundクラスを使用する必要があります。

NSSound *sound = [[[NSSound alloc] initWithContentsOfFile: soundPath byReference: NO] autorelease];

[sound play];
于 2012-08-10T14:02:26.080 に答える
1

コードは、要求した内容をログに記録し、コードで設定したブレークポイントにヒットします。続行ボタンを押します。

于 2012-08-10T13:44:23.383 に答える