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

Posted

技术标签:

【中文标题】指向整数转换的不兼容指针将“SystemSoundID”传递给“SystemSoundID”类型的参数【英文标题】:Incompatible pointer to integer conversion passing 'SystemSoundID to parameter of type 'SystemSoundID' 【发布时间】:2014-04-08 03:33:59 【问题描述】:

我不懂 AudioToolbox 框架... 我有这行代码:

-(IBAction)PlaySound1:(id)sender

AudioservicesPlaySystemSound(PlaySoundID1);


但是 xcode 给我这个错误:

Xcode 建议我改为这样做:

-(IBAction)PlaySound1:(id)sender

AudioServicesPlaySystemSound(*(PlaySoundID1));


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

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

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

Xcode 建议我去掉系统声音 ID 前面的“&”,但如果我这样做,声音将无法播放!唯一的声音播放是如果我与 xcode 相矛盾(我通常不会介意,但由于我有超过 100 个声音,错误的数量是荒谬的!)

【问题讨论】:

显示你是如何定义PlaySoundID1的。 【参考方案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 值。

【讨论】:

我确实添加了星号...现在已修复!感谢您的宝贵时间!

以上是关于指向整数转换的不兼容指针将“SystemSoundID”传递给“SystemSoundID”类型的参数的主要内容,如果未能解决你的问题,请参考以下文章

“指向使用 'NSNumber *' 类型的表达式初始化 'int' 的整数转换的不兼容指针”

指向分配给“NSInteger”(又名“int”)的整数转换的不兼容指针

从'NSInteger'(又名'int')分配给'NSString *'的不兼容整数到指针转换;

Nsinteger 可访问问题

不兼容的整数到指针的转换将“NSInteger”(又名“int”)发送到“NSInteger *”(又名“int *”)类型的参数

Swig:将成员变量(指向值的指针)转换为 python 列表