指向整数转换的指针不兼容,将'SystemSoundID传递给'SystemSoundID'类型的参数

时间:2014-04-08 03:34:00

标签: objective-c xcode audiotoolbox

我不懂AudioToolbox Framework ... 我有这行代码:

-(IBAction)PlaySound1:(id)sender{

AudioServicesPlaySystemSound(PlaySoundID1);

}

但是xcode给了我这个错误:

  

指向整数转换的指针不兼容将'SystemSoundID传递给'SystemSoundID'类型的参数

Xcode建议我这样做:

-(IBAction)PlaySound1:(id)sender{

AudioServicesPlaySystemSound(*(PlaySoundID1));

}

但如果我这样做,声音就不会播放!另外我见过许多youtube教程,人们甚至没有收到错误...有没有办法在xcode中禁用某个警告或有办法解决这个问题?

编辑:我在代码的这一行也得到了同样的错误:

AudioServicesCreateSystemSoundID((__bridge CFURLRef)SoundURL1, &PlaySoundID1);

Xcode建议我摘下“&”在我的系统声音id面前,但如果我这样做,声音将无法播放!声音播放的唯一时间是如果我与xcode相矛盾(我通常不介意,但因为我有100多个声音,错误的数量是荒谬的!)

enter image description here

1 个答案:

答案 0 :(得分:1)

根据错误,您最有可能错误地定义PlaySoundID1

你可能有类似的东西:

SystemSoundID *PlaySoundID1;

但你需要的是:

SystemSoundID PlaySoundID1; // no asterisk

您对AudioServicesCreateSystemSoundID的致电应该是这样的:

SystemSoundID usedSoundID;
OSStatus status = AudioServicesCreateSystemSoundID((__bridge CFURLRef)SoundURL1, &usedSoundID);
// check the status and look at usedSoundID as needed

第二个参数是" out"价值因此您不应该传递PlaySoundID值。