私はこのような音を作ることに慣れています:
NSString *explosionsoundpath = [[NSBundle mainBundle] pathForResource:@"explosion" ofType:@"caf"];
CFURLRef explosionurl = (CFURLRef ) [NSURL fileURLWithPath:explosionsoundpath];
AudioServicesCreateSystemSoundID (explosionurl, &explosion1a);
AudioServicesCreateSystemSoundID (explosionurl, &explosion1b);
爆発1aと爆発1bは、.hファイルで次のように宣言されたインスタンス変数です。
SystemSoundID explosion1a;
このような配列でこのプロセスを作成しようとするたびに
NSString *plasmasoundpath = [[NSBundle mainBundle] pathForResource:@"plasmasound" ofType:@"caf"];
CFURLRef plasmaurl = (CFURLRef ) [NSURL fileURLWithPath:plasmasoundpath];
SystemSoundID plasmalaunch1;
AudioServicesCreateSystemSoundID (plasmaurl, &plasmalaunch1);
[self.plasmasounds addObject:plasmalaunch1];
警告が表示されます:
"Passing argument 1 of addObject makes pointer from integer without a cast.
addObject 引数の Plasmalaunch1 の前に & 記号を付けると、
incompatible pointer type warning.
後で呼び出して再生できる効果音の配列を作成しようとしています:
SystemSoundID sound = [self.plasmasounds objectAtIndex:i];
AudioServicesPlaySystemSound(sound);
これを機能させる方法 (またはこの問題を解決するためのより良い方法) に関するアドバイスをいただければ幸いです。